27 TFoamVect::TFoamVect()
37 TFoamVect::TFoamVect(Int_t n)
43 fCoords =
new Double_t[fDim];
46 Error(
"TFoamVect",
"Constructor failed to allocate\n");
48 for (i=0; i<n; i++) *(fCoords+i)=0.0;
50 if(gDebug) Info(
"TFoamVect",
"USER CONSTRUCTOR TFoamVect(const Int_t)\n ");
56 TFoamVect::TFoamVect(
const TFoamVect &Vect): TObject(Vect)
58 fDim = Vect.fDim; fCoords = 0;
59 if(fDim > 0) fCoords =
new Double_t[fDim];
63 Error(
"TFoamVect",
"Constructor failed to allocate fCoords\n");
67 for(Int_t i=0; i<fDim; i++)
68 fCoords[i] = Vect.fCoords[i];
75 TFoamVect::~TFoamVect()
77 if(gDebug) Info(
"TFoamVect",
" DESTRUCTOR TFoamVect~ \n");
85 TFoamVect& TFoamVect::operator =(
const TFoamVect& Vect)
88 if (&Vect ==
this)
return *
this;
90 Error(
"TFoamVect",
"operator= : invalid dimensions : %d and %d \n ",fDim,Vect.fDim);
91 if( fDim != Vect.fDim ) {
93 fCoords =
new Double_t[Vect.fDim];
97 fCoords[i] = Vect.fCoords[i];
98 if(gDebug) Info(
"TFoamVect",
"SUBSITUTE operator =\n ");
108 Double_t &TFoamVect::operator[](Int_t n)
110 if ((n<0) || (n>=fDim)) {
111 Error(
"TFoamVect",
"operator[], out of range \n");
119 TFoamVect& TFoamVect::operator*=(
const Double_t &x)
121 for(Int_t i=0;i<fDim;i++)
122 fCoords[i] = fCoords[i]*x;
129 TFoamVect& TFoamVect::operator+=(
const TFoamVect& Shift)
131 if( fDim != Shift.fDim){
132 Error(
"TFoamVect",
"operator+, different dimensions= %d %d \n",fDim,Shift.fDim);
134 for(Int_t i=0;i<fDim;i++)
135 fCoords[i] = fCoords[i]+Shift.fCoords[i];
142 TFoamVect& TFoamVect::operator-=(
const TFoamVect& Shift)
144 if( fDim != Shift.fDim) {
145 Error(
"TFoamVect",
"operator+, different dimensions= %d %d \n",fDim,Shift.fDim);
147 for(Int_t i=0;i<fDim;i++)
148 fCoords[i] = fCoords[i]-Shift.fCoords[i];
156 TFoamVect TFoamVect::operator+(
const TFoamVect &p2)
158 TFoamVect temp(fDim);
168 TFoamVect TFoamVect::operator-(
const TFoamVect &p2)
170 TFoamVect temp(fDim);
179 TFoamVect& TFoamVect::operator =(Double_t Vect[])
182 for(i=0; i<fDim; i++)
183 fCoords[i] = Vect[i];
190 TFoamVect& TFoamVect::operator =(Double_t x)
193 for(Int_t i=0; i<fDim; i++)
202 void TFoamVect::Print(Option_t *option)
const
204 if(!option) Error(
"Print ",
"No option set \n");
206 Int_t pr = std::cout.precision(7);
208 for(i=0; i<fDim-1; i++) std::cout << std::setw(12) << *(fCoords+i) <<
",";
209 std::cout << std::setw(12) << *(fCoords+fDim-1);
211 std::cout.precision(pr);