27 template<
class Element>
class TVectorT :
public TObject {
40 Element*
New_m (Int_t size);
42 Int_t
Memcpy_m(Element *newp,
const Element *oldp,Int_t copySize,
43 Int_t newSize,Int_t oldSize);
45 void Allocate(Int_t nrows,Int_t row_lwb = 0,Int_t init = 0);
56 TVectorT(Int_t n,
const Element *elements);
57 TVectorT(Int_t lwb,Int_t upb,
const Element *elements);
69 TVectorT(Int_t lwb,Int_t upb,Double_t iv1, ...);
111 Element
Norm1 ()
const;
115 Element
Sum ()
const;
116 Element
Min ()
const;
117 Element
Max ()
const;
119 inline const Element &
operator()(Int_t index)
const;
121 inline const Element &
operator[](Int_t index)
const {
return (*
this)(index); }
122 inline Element &
operator[](Int_t index) {
return (*
this)(index); }
133 Error(
"operator=(const TVectorT2 &)",
"vectors not compatible");
137 TObject::operator=(source);
140 for (Int_t i = 0; i < this->
fNrows; i++)
177 void Draw (Option_t *option=
"");
178 void Print(Option_t *option=
"")
const;
209 this->
GetSub(row_lwb,row_upb,tmp,option);
218 const Int_t aind = ind-
fRowLwb;
219 if (aind >=
fNrows || aind < 0) {
220 Error(
"operator()",
"Request index(%d) outside vector range of %d - %d",ind,fRowLwb,fRowLwb+
fNrows);
231 const Int_t aind = ind-
fRowLwb;
232 if (aind >=
fNrows || aind < 0) {
233 Error(
"operator()",
"Request index(%d) outside vector range of %d - %d",ind,fRowLwb,fRowLwb+
fNrows);
248 template<
class Element>
253 template <
class Element1,
class Element2>
255 template <
class Element1,
class Element2,
class Element3>
257 template <
class Element1,
class Element2,
class Element3>
const TVectorT< Element > & Use(Int_t lwb, Int_t upb, const Element *data) const
void SetElements(const Element *elements)
void Compare(const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Compare two vectors and print out the result of the comparison.
TVectorT< Element > & ResizeTo(Int_t lwb, Int_t upb)
Resize the vector to [lwb:upb] .
TVectorT< Element > & operator-=(Element val)
Subtract val from every element of the vector.
const Element * GetMatrixArray() const
TMatrixT< Element1 > OuterProduct(const TVectorT< Element1 > &v1, const TVectorT< Element2 > &v2)
Return the matrix M = v1 * v2'.
Bool_t operator!=(Element val) const
Are all vector elements not equal to val?
void Add(const TVectorT< Element > &v)
Add vector v to this vector.
const Element & operator[](Int_t index) const
void Draw(Option_t *option="")
Draw this vector The histogram is named "TVectorT" by default and no title.
TVectorT< Element > operator+(const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Return source1+source2.
Bool_t fIsOwner
data container
Element operator*(const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Compute the scalar product.
TVectorT< Element > & Invert()
v[i] = 1/v[i]
Element fDataStack[kSizeMax]
Element NormInf() const
Compute the infinity-norm of the vector MAX{ |v[i]| }.
Bool_t AreCompatible(const TVectorT< Element1 > &v1, const TVectorT< Element2 > &v2, Int_t verbose=0)
Check if v1 and v2 are both valid and have the same shape.
TVectorT< Element > & AddElemDiv(TVectorT< Element > &target, Element scalar, const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Modify addition: target += scalar * ElementDiv(source1,source2) .
void Print(Option_t *option="") const
Print the vector as a list of elements.
TVectorT< Element > & Sqr()
Square each element of the vector.
double beta(double x, double y)
Calculates the beta function.
void Randomize(Element alpha, Element beta, Double_t &seed)
randomize vector elements value
TVectorT< Element > & Use(Int_t lwb, Int_t upb, Element *data)
Use the array data to fill the vector lwb..upb].
TVectorT< Element > & ElementDiv(TVectorT< Element > &target, const TVectorT< Element > &source)
Divide target by the source, element-by-element.
Bool_t operator>=(Element val) const
Are all vector elements >= val?
TVectorT< Element > & SetSub(Int_t row_lwb, const TVectorT< Element > &source)
Insert vector source starting at [row_lwb], thereby overwriting the part [row_lwb..row_lwb+nrows_source];.
Element1 Mult(const TVectorT< Element1 > &v1, const TMatrixT< Element2 > &m, const TVectorT< Element3 > &v2)
Perform v1 * M * v2, a scalar result.
void Delete_m(Int_t size, Element *&)
Delete data pointer m, if it was assigned on the heap.
void Clear(Option_t *="")
TVectorT< Element > & Sqrt()
Take square root of all elements.
void Allocate(Int_t nrows, Int_t row_lwb=0, Int_t init=0)
Allocate new vector.
TVectorT< Element > & Shift(Int_t row_shift)
TVectorT< Element > & GetSub(Int_t row_lwb, Int_t row_upb, TVectorT< Element > &target, Option_t *option="S") const
Get subvector [row_lwb..row_upb]; The indexing range of the returned vector depends on the argument o...
Element Sum() const
Compute sum of elements.
Element Min() const
return minimum vector element value
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t Int_t m
Element * GetMatrixArray()
Bool_t operator==(Element val) const
Are all vector elements equal to val?
TVectorT< Element > & operator=(const TVectorT< Element > &source)
Notice that this assignment does NOT change the ownership : if the storage space was adopted...
TVectorT< Element > & operator*=(Element val)
Multiply every element of the vector with val.
TVectorT< Element > & Zero()
Set vector elements to zero.
TVectorT< Element > & ElementMult(TVectorT< Element > &target, const TVectorT< Element > &source)
Multiply target by the source, element-by-element.
Bool_t operator>(Element val) const
Are all vector elements > val?
Int_t GetNoElements() const
Element Norm2Sqr() const
Compute the square of the 2-norm SUM{ v[i]^2 }.
Bool_t operator<=(Element val) const
Are all vector elements <= val?
Element Norm1() const
Compute the 1-norm of the vector SUM{ |v[i]| }.
Int_t NonZeros() const
Compute the number of elements != 0.0.
TVectorT< Element > & SelectNonZeros(const TVectorT< Element > &select)
Keep only element as selected through array select non-zero.
Element Dot(const TVectorT< Element > &source1, const TVectorT< Element > &source2)
return inner-produvt v1 . v2
TVectorT< Element > & ResizeTo(const TVectorT< Element > &v)
Int_t Memcpy_m(Element *newp, const Element *oldp, Int_t copySize, Int_t newSize, Int_t oldSize)
Copy copySize doubles from *oldp to *newp .
TVectorT< Element > & AddElemMult(TVectorT< Element > &target, Element scalar, const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Modify addition: target += scalar * ElementMult(source1,source2) .
TVectorT< Element > & Abs()
Take an absolute value of a vector, i.e. apply Abs() to each element.
Element & operator[](Int_t index)
Bool_t MatchesNonZeroPattern(const TVectorT< Element > &select)
Check if vector elements as selected through array select are non-zero.
static Element & NaNValue()
Bool_t VerifyVectorIdentity(const TVectorT< Element > &m1, const TVectorT< Element > &m2, Int_t verbose, Element maxDevAllow)
Verify that elements of the two vectors are equal within maxDevAllow .
TVectorT< Element > & ResizeTo(Int_t n)
Bool_t VerifyVectorValue(const TVectorT< Element > &m, Element val, Int_t verbose, Element maxDevAllow)
Validate that all elements of vector have value val within maxDevAllow .
TVectorT< Element > operator-(const TVectorT< Element > &source1, const TVectorT< Element > &source2)
Return source1-source2.
Element Max() const
return maximum vector element value
Element * New_m(Int_t size)
default kTRUE, when Use array kFALSE
void AddSomeConstant(Element val, const TVectorT< Element > &select)
Add to vector elements as selected through array select the value val.
Bool_t SomePositive(const TVectorT< Element > &select)
Check if vector elements as selected through array select are all positive.
TVectorT(const TVectorT< Element2 > &another)
Bool_t operator<(Element val) const
Are all vector elements < val?
TVectorT< Element > & operator+=(Element val)
Add val to every element of the vector.
TVectorT< Element > & Apply(const TElementActionT< Element > &action)
Apply action to each element of the vector.
const Element & operator()(Int_t index) const