Template class of Vectors in the linear algebra package.
See MatrixPage for the documentation of the linear algebra package
Unless otherwise specified, vector indices always start with 0, spanning up to the specified limit-1.
For (n) vectors where n <= kSizeMax (5 currently) storage space is available on the stack, thus avoiding expensive allocation/ deallocation of heap space . However, this introduces of course kSizeMax overhead for each vector object . If this is an issue recompile with a new appropriate value (>=0) for kSizeMax
Another way to assign and store vector data is through Use see for instance stressLinear.cxx file .
Note that Constructors/assignments exists for all different matrix views
For usage examples see $ROOTSYS/test/stressLinear.cxx
Definition at line 27 of file TVectorT.h.
Public Member Functions | |
TVectorT () | |
TVectorT (const TMatrixTColumn_const< Element > &mc) | |
Constructor : create vector from matrix column. More... | |
TVectorT (const TMatrixTDiag_const< Element > &md) | |
Constructor : create vector from matrix diagonal. More... | |
TVectorT (const TMatrixTRow_const< Element > &mr) | |
Constructor : create vector from matrix row. More... | |
TVectorT (const TVectorT< Element > &another) | |
Copy constructor. More... | |
template<class Element2 > | |
TVectorT (const TVectorT< Element2 > &another) | |
TVectorT (Int_t lwb, Int_t upb) | |
Constructor [lwb..upb]-vector. More... | |
TVectorT (Int_t lwb, Int_t upb, const Element *elements) | |
Constructor [lwb..upb]-vector with data copied from array elements. More... | |
TVectorT (Int_t lwb, Int_t upb, Double_t iv1,...) | |
Make a vector and assign initial values. More... | |
TVectorT (Int_t n) | |
Constructor n-vector. More... | |
TVectorT (Int_t n, const Element *elements) | |
Constructor n-vector with data copied from array elements. More... | |
virtual | ~TVectorT () |
TVectorT< Element > & | Abs () |
Take an absolute value of a vector, i.e. apply Abs() to each element. More... | |
void | Add (const TVectorT< Element > &v) |
Add vector v to this vector. More... | |
void | Add (const TVectorT< Element > &v1, const TVectorT< Element > &v2) |
Set this vector to v1+v2. More... | |
void | AddSomeConstant (Element val, const TVectorT< Element > &select) |
Add to vector elements as selected through array select the value val. More... | |
TVectorT< Element > & | Apply (const TElementActionT< Element > &action) |
Apply action to each element of the vector. More... | |
TVectorT< Element > & | Apply (const TElementPosActionT< Element > &action) |
Apply action to each element of the vector. More... | |
TClass * | Class () |
void | Clear (Option_t *="") |
void | Draw (Option_t *option="") |
Draw this vector The histogram is named "TVectorT" by default and no title. More... | |
Int_t | GetLwb () const |
Element * | GetMatrixArray () |
const Element * | GetMatrixArray () const |
Int_t | GetNoElements () const |
Int_t | GetNrows () const |
TVectorT< Element > | GetSub (Int_t row_lwb, Int_t row_upb, Option_t *option="S") const |
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 option: More... | |
Int_t | GetUpb () const |
void | Invalidate () |
TVectorT< Element > & | Invert () |
v[i] = 1/v[i] More... | |
Bool_t | IsOwner () const |
Bool_t | IsValid () const |
void | MakeValid () |
Bool_t | MatchesNonZeroPattern (const TVectorT< Element > &select) |
Check if vector elements as selected through array select are non-zero. More... | |
Element | Max () const |
return maximum vector element value More... | |
Element | Min () const |
return minimum vector element value More... | |
Int_t | NonZeros () const |
Compute the number of elements != 0.0. More... | |
Element | Norm1 () const |
Compute the 1-norm of the vector SUM{ |v[i]| }. More... | |
Element | Norm2Sqr () const |
Compute the square of the 2-norm SUM{ v[i]^2 }. More... | |
Element | NormInf () const |
Compute the infinity-norm of the vector MAX{ |v[i]| }. More... | |
Bool_t | operator!= (Element val) const |
Are all vector elements not equal to val? More... | |
Element & | operator() (Int_t index) |
const Element & | operator() (Int_t index) const |
TVectorT< Element > & | operator*= (const TMatrixT< Element > &a) |
"Inplace" multiplication target = A*target. More... | |
TVectorT< Element > & | operator*= (const TMatrixTSparse< Element > &a) |
"Inplace" multiplication target = A*target. More... | |
TVectorT< Element > & | operator*= (const TMatrixTSym< Element > &a) |
"Inplace" multiplication target = A*target. More... | |
TVectorT< Element > & | operator*= (Element val) |
Multiply every element of the vector with val. More... | |
TVectorT< Element > & | operator+= (const TVectorT< Element > &source) |
Add vector source. More... | |
TVectorT< Element > & | operator+= (Element val) |
Add val to every element of the vector. More... | |
TVectorT< Element > & | operator-= (const TVectorT< Element > &source) |
Subtract vector source. More... | |
TVectorT< Element > & | operator-= (Element val) |
Subtract val from every element of the vector. More... | |
Bool_t | operator< (Element val) const |
Are all vector elements < val? More... | |
Bool_t | operator<= (Element val) const |
Are all vector elements <= val? More... | |
TVectorT< Element > & | operator= (const TMatrixTColumn_const< Element > &mc) |
Assign a matrix column to a vector. More... | |
TVectorT< Element > & | operator= (const TMatrixTDiag_const< Element > &md) |
Assign the matrix diagonal to a vector. More... | |
TVectorT< Element > & | operator= (const TMatrixTRow_const< Element > &mr) |
Assign a matrix row to a vector. More... | |
TVectorT< Element > & | operator= (const TMatrixTSparseDiag_const< Element > &md) |
Assign a sparse matrix diagonal to a vector. More... | |
TVectorT< Element > & | operator= (const TMatrixTSparseRow_const< Element > &md) |
Assign a sparse matrix row to a vector. More... | |
TVectorT< Element > & | operator= (const TVectorT< Element > &source) |
Notice that this assignment does NOT change the ownership : if the storage space was adopted, source is copied to this space . More... | |
template<class Element2 > | |
TVectorT< Element > & | operator= (const TVectorT< Element2 > &source) |
TVectorT< Element > & | operator= (Element val) |
Assign val to every element of the vector. More... | |
Bool_t | operator== (Element val) const |
Are all vector elements equal to val? More... | |
Bool_t | operator> (Element val) const |
Are all vector elements > val? More... | |
Bool_t | operator>= (Element val) const |
Are all vector elements >= val? More... | |
Element & | operator[] (Int_t index) |
const Element & | operator[] (Int_t index) const |
void | Print (Option_t *option="") const |
Print the vector as a list of elements. More... | |
void | Randomize (Element alpha, Element beta, Double_t &seed) |
randomize vector elements value More... | |
TVectorT< Element > & | ResizeTo (const TVectorT< Element > &v) |
TVectorT< Element > & | ResizeTo (Int_t lwb, Int_t upb) |
Resize the vector to [lwb:upb] . More... | |
TVectorT< Element > & | ResizeTo (Int_t n) |
TVectorT< Element > & | SelectNonZeros (const TVectorT< Element > &select) |
Keep only element as selected through array select non-zero. More... | |
void | SetElements (const Element *elements) |
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];. More... | |
TVectorT< Element > & | Shift (Int_t row_shift) |
Bool_t | SomePositive (const TVectorT< Element > &select) |
Check if vector elements as selected through array select are all positive. More... | |
TVectorT< Element > & | Sqr () |
Square each element of the vector. More... | |
TVectorT< Element > & | Sqrt () |
Take square root of all elements. More... | |
Element | Sum () const |
Compute sum of elements. More... | |
const TVectorT< Element > & | Use (const TVectorT< Element > &v) const |
const TVectorT< Element > & | Use (Int_t lwb, Int_t upb, const Element *data) const |
TVectorT< Element > & | Use (Int_t lwb, Int_t upb, Element *data) |
Use the array data to fill the vector lwb..upb]. More... | |
const TVectorT< Element > & | Use (Int_t n, const Element *data) const |
TVectorT< Element > & | Use (Int_t n, Element *data) |
TVectorT< Element > & | Use (TVectorT< Element > &v) |
TVectorT< Element > & | Zero () |
Set vector elements to zero. More... | |
Protected Types | |
enum | { kSizeMax = 5 } |
enum | { kWorkMax = 100 } |
enum | EVectorStatusBits { kStatus = BIT(14) } |
Protected Member Functions | |
void | Allocate (Int_t nrows, Int_t row_lwb=0, Int_t init=0) |
Allocate new vector. More... | |
void | Delete_m (Int_t size, Element *&) |
Delete data pointer m, if it was assigned on the heap. More... | |
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 . More... | |
Element * | New_m (Int_t size) |
default kTRUE, when Use array kFALSE More... | |
Protected Attributes | |
Element | fDataStack [kSizeMax] |
Element * | fElements {nullptr} |
Bool_t | fIsOwner {kTRUE} |
data container More... | |
Int_t | fNrows {0} |
Int_t | fRowLwb {0} |
#include <TVectorT.h>
|
protected |
Enumerator | |
---|---|
kSizeMax |
Definition at line 34 of file TVectorT.h.
|
protected |
Enumerator | |
---|---|
kWorkMax |
Definition at line 35 of file TVectorT.h.
|
protected |
Enumerator | |
---|---|
kStatus |
Definition at line 47 of file TVectorT.h.
Definition at line 53 of file TVectorT.h.
Constructor n-vector.
Definition at line 177 of file TVectorT.cxx.
Constructor [lwb..upb]-vector.
Definition at line 186 of file TVectorT.cxx.
Constructor n-vector with data copied from array elements.
Definition at line 195 of file TVectorT.cxx.
TVectorT< Element >::TVectorT | ( | Int_t | lwb, |
Int_t | upb, | ||
const Element * | elements | ||
) |
Constructor [lwb..upb]-vector with data copied from array elements.
Definition at line 205 of file TVectorT.cxx.
Copy constructor.
Definition at line 215 of file TVectorT.cxx.
TVectorT< Element >::TVectorT | ( | const TMatrixTRow_const< Element > & | mr | ) |
Constructor : create vector from matrix row.
Definition at line 226 of file TVectorT.cxx.
TVectorT< Element >::TVectorT | ( | const TMatrixTColumn_const< Element > & | mc | ) |
Constructor : create vector from matrix column.
Definition at line 238 of file TVectorT.cxx.
TVectorT< Element >::TVectorT | ( | const TMatrixTDiag_const< Element > & | md | ) |
Constructor : create vector from matrix diagonal.
Definition at line 250 of file TVectorT.cxx.
|
inline |
Definition at line 62 of file TVectorT.h.
Make a vector and assign initial values.
Argument list should contain Element values to assign to vector elements. The list must be terminated by the string "END". Example: TVectorT foo(1,3,0.0,1.0,1.5,"END");
Definition at line 265 of file TVectorT.cxx.
Definition at line 71 of file TVectorT.h.
Take an absolute value of a vector, i.e. apply Abs() to each element.
Definition at line 464 of file TVectorT.cxx.
Add vector v to this vector.
Definition at line 84 of file TVectorT.cxx.
void TVectorT< Element >::Add | ( | const TVectorT< Element > & | v1, |
const TVectorT< Element > & | v2 | ||
) |
Set this vector to v1+v2.
Definition at line 102 of file TVectorT.cxx.
void TVectorT< Element >::AddSomeConstant | ( | Element | val, |
const TVectorT< Element > & | select | ||
) |
Add to vector elements as selected through array select the value val.
Definition at line 1284 of file TVectorT.cxx.
|
protected |
Allocate new vector.
Arguments are number of rows and row lowerbound (0 default).
Definition at line 151 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::Apply | ( | const TElementActionT< Element > & | action | ) |
Apply action to each element of the vector.
Definition at line 1322 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::Apply | ( | const TElementPosActionT< Element > & | action | ) |
Apply action to each element of the vector.
In action the location of the current element is known.
Definition at line 1335 of file TVectorT.cxx.
Definition at line 174 of file TVectorT.h.
Delete data pointer m, if it was assigned on the heap.
Definition at line 53 of file TVectorT.cxx.
Draw this vector The histogram is named "TVectorT" by default and no title.
Definition at line 1353 of file TVectorT.cxx.
Definition at line 73 of file TVectorT.h.
|
inline |
Definition at line 78 of file TVectorT.h.
|
inline |
Definition at line 79 of file TVectorT.h.
Definition at line 76 of file TVectorT.h.
Definition at line 75 of file TVectorT.h.
|
inline |
Definition at line 206 of file TVectorT.h.
TVectorT< Element > & 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 option:
option == "S" : return [0..row_upb-row_lwb+1] (default) else : return [row_lwb..row_upb]
Definition at line 373 of file TVectorT.cxx.
Definition at line 74 of file TVectorT.h.
Definition at line 81 of file TVectorT.h.
v[i] = 1/v[i]
Definition at line 522 of file TVectorT.cxx.
Definition at line 84 of file TVectorT.h.
Definition at line 83 of file TVectorT.h.
Definition at line 82 of file TVectorT.h.
Bool_t TVectorT< Element >::MatchesNonZeroPattern | ( | const TVectorT< Element > & | select | ) |
Check if vector elements as selected through array select are non-zero.
Definition at line 1238 of file TVectorT.cxx.
Element TVectorT< Element >::Max |
return maximum vector element value
Definition at line 666 of file TVectorT.cxx.
|
protected |
Copy copySize doubles from *oldp to *newp .
However take care of the situation where both pointers are assigned to the same stack space
Definition at line 124 of file TVectorT.cxx.
Element TVectorT< Element >::Min |
return minimum vector element value
Definition at line 654 of file TVectorT.cxx.
default kTRUE, when Use array kFALSE
Return data pointer .
if requested size <= kSizeMax, assign pointer to the stack space
Definition at line 67 of file TVectorT.cxx.
Compute the number of elements != 0.0.
Definition at line 620 of file TVectorT.cxx.
Element TVectorT< Element >::Norm1 |
Compute the 1-norm of the vector SUM{ |v[i]| }.
Definition at line 567 of file TVectorT.cxx.
Element TVectorT< Element >::Norm2Sqr |
Compute the square of the 2-norm SUM{ v[i]^2 }.
Definition at line 584 of file TVectorT.cxx.
Element TVectorT< Element >::NormInf |
Compute the infinity-norm of the vector MAX{ |v[i]| }.
Definition at line 603 of file TVectorT.cxx.
Are all vector elements not equal to val?
Definition at line 1153 of file TVectorT.cxx.
Definition at line 226 of file TVectorT.h.
|
inline |
Definition at line 213 of file TVectorT.h.
TVectorT< Element > & TVectorT< Element >::operator*= | ( | const TMatrixT< Element > & | a | ) |
"Inplace" multiplication target = A*target.
A needn't be a square one If target has to be resized, it should own the storage: fIsOwner = kTRUE
Definition at line 952 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator*= | ( | const TMatrixTSparse< Element > & | a | ) |
"Inplace" multiplication target = A*target.
A needn't be a square one If target has to be resized, it should own the storage: fIsOwner = kTRUE
Definition at line 1019 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator*= | ( | const TMatrixTSym< Element > & | a | ) |
"Inplace" multiplication target = A*target.
A is symmetric . vector size will not change
Definition at line 1082 of file TVectorT.cxx.
Multiply every element of the vector with val.
Definition at line 895 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator+= | ( | const TVectorT< Element > & | source | ) |
Add vector source.
Definition at line 911 of file TVectorT.cxx.
Add val to every element of the vector.
Definition at line 863 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator-= | ( | const TVectorT< Element > & | source | ) |
Subtract vector source.
Definition at line 931 of file TVectorT.cxx.
Subtract val from every element of the vector.
Definition at line 879 of file TVectorT.cxx.
Are all vector elements < val?
Definition at line 1170 of file TVectorT.cxx.
Are all vector elements <= val?
Definition at line 1187 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator= | ( | const TMatrixTColumn_const< Element > & | mc | ) |
Assign a matrix column to a vector.
Definition at line 729 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator= | ( | const TMatrixTDiag_const< Element > & | md | ) |
Assign the matrix diagonal to a vector.
Definition at line 760 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator= | ( | const TMatrixTRow_const< Element > & | mr | ) |
Assign a matrix row to a vector.
Definition at line 698 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator= | ( | const TMatrixTSparseDiag_const< Element > & | md | ) |
Assign a sparse matrix diagonal to a vector.
Definition at line 823 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator= | ( | const TMatrixTSparseRow_const< Element > & | mr | ) |
Assign a sparse matrix row to a vector.
The matrix row is implicitly transposed to allow the assignment in the strict sense.
Definition at line 792 of file TVectorT.cxx.
TVectorT< Element > & TVectorT< Element >::operator= | ( | const TVectorT< Element > & | source | ) |
Notice that this assignment does NOT change the ownership : if the storage space was adopted, source is copied to this space .
Definition at line 680 of file TVectorT.cxx.
|
inline |
Definition at line 130 of file TVectorT.h.
Assign val to every element of the vector.
Definition at line 847 of file TVectorT.cxx.
Are all vector elements equal to val?
Definition at line 1136 of file TVectorT.cxx.
Are all vector elements > val?
Definition at line 1204 of file TVectorT.cxx.
Are all vector elements >= val?
Definition at line 1221 of file TVectorT.cxx.
Definition at line 122 of file TVectorT.h.
Definition at line 121 of file TVectorT.h.
Print the vector as a list of elements.
Definition at line 1363 of file TVectorT.cxx.
void TVectorT< Element >::Randomize | ( | Element | alpha, |
Element | beta, | ||
Double_t & | seed | ||
) |
randomize vector elements value
Definition at line 1305 of file TVectorT.cxx.
|
inline |
Definition at line 90 of file TVectorT.h.
TVectorT< Element > & TVectorT< Element >::ResizeTo | ( | Int_t | lwb, |
Int_t | upb | ||
) |
Resize the vector to [lwb:upb] .
New dynamic elemenst are created, the overlapping part of the old ones are copied to the new structures, then the old elements are deleted.
Definition at line 294 of file TVectorT.cxx.
Definition at line 89 of file TVectorT.h.
TVectorT< Element > & TVectorT< Element >::SelectNonZeros | ( | const TVectorT< Element > & | select | ) |
Keep only element as selected through array select non-zero.
Definition at line 544 of file TVectorT.cxx.
Definition at line 85 of file TVectorT.h.
TVectorT< Element > & 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];.
Definition at line 422 of file TVectorT.cxx.
Definition at line 87 of file TVectorT.h.
Bool_t TVectorT< Element >::SomePositive | ( | const TVectorT< Element > & | select | ) |
Check if vector elements as selected through array select are all positive.
Definition at line 1261 of file TVectorT.cxx.
Square each element of the vector.
Definition at line 482 of file TVectorT.cxx.
Take square root of all elements.
Definition at line 500 of file TVectorT.cxx.
Element TVectorT< Element >::Sum |
Compute sum of elements.
Definition at line 637 of file TVectorT.cxx.
|
inline |
Definition at line 201 of file TVectorT.h.
|
inline |
Definition at line 93 of file TVectorT.h.
TVectorT< Element > & TVectorT< Element >::Use | ( | Int_t | lwb, |
Int_t | upb, | ||
Element * | data | ||
) |
Use the array data to fill the vector lwb..upb].
Definition at line 349 of file TVectorT.cxx.
|
inline |
Definition at line 195 of file TVectorT.h.
|
inline |
Definition at line 194 of file TVectorT.h.
|
inline |
Definition at line 196 of file TVectorT.h.
Set vector elements to zero.
Definition at line 453 of file TVectorT.cxx.
Definition at line 37 of file TVectorT.h.
|
protected |
Definition at line 32 of file TVectorT.h.
data container
Definition at line 38 of file TVectorT.h.
Definition at line 30 of file TVectorT.h.
Definition at line 31 of file TVectorT.h.