// @(#)root/foam:$Name: $:$Id: TFoamVect.h,v 1.7 2005/04/15 12:39:34 brun Exp $
// Author: S. Jadach <mailto:Stanislaw.jadach@ifj.edu.pl>, P.Sawicki <mailto:Pawel.Sawicki@ifj.edu.pl>
#ifndef ROOT_TFoamVect
#define ROOT_TFoamVect
////////////////////////////////////////////////////////////////////////////////
// //
// Auxiliary class TFoamVect of n-dimensional vector, with dynamic allocation //
// used for the cartesian geometry of the TFoam cells //
// //
////////////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TObject
#include "TObject.h"
#endif
///////////////////////////////////////////////////////////////////////////////
class TFoamVect : public TObject {
// constructor
private:
Int_t fDim; // Dimension
Double_t *fCoords; // [fDim] Coordinates
TFoamVect *fNext; // pointer for tree construction
TFoamVect *fPrev; // pointer for tree construction
public:
TFoamVect(); // Constructor
TFoamVect(Int_t); // USER Constructor
TFoamVect(const TFoamVect &); // Copy constructor
virtual ~TFoamVect(); // Destructor
//////////////////////////////////////////////////////////////////////////////
// Overloading operators //
//////////////////////////////////////////////////////////////////////////////
TFoamVect& operator =(const TFoamVect&); // = operator; Substitution
Double_t &operator[](Int_t); // [] provides POINTER to coordinate
TFoamVect& operator =(Double_t []); // LOAD IN entire double vector
TFoamVect& operator =(Double_t); // LOAD IN double number
////////////////////////// OTHER METHODS //////////////////////////////////
TFoamVect& operator+=(const TFoamVect&); // +=; add vector u+=v (FAST)
TFoamVect& operator-=(const TFoamVect&); // +=; add vector u+=v (FAST)
TFoamVect& operator*=(const Double_t&); // *=; mult. by scalar v*=x (FAST)
TFoamVect operator+( const TFoamVect&); // +; u=v+s, NEVER USE IT, SLOW!!!
TFoamVect operator-( const TFoamVect&); // -; u=v-s, NEVER USE IT, SLOW!!!
void Print(Option_t *option) const; // Prints vector
void PrintList(); // Prints vector and the following linked list
Int_t GetDim() const { return fDim; } // Returns dimension
Double_t GetCoord(Int_t i) const {return fCoords[i];}; // Returns coordinate
ClassDef(TFoamVect,1); //n-dimensional vector with dynamical allocation
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1