CMS 3D CMS Logo

TNArrayD.cc

Go to the documentation of this file.
00001 //----------Author's Name:F.X. Gentit  DAPNIA/SPP CEN Saclay
00002 //----------Copyright:Those valid for CEA sofware
00003 //----------Modified:07/06/2007
00004 
00005 #include "CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/interface/TNArrayD.h"
00006 //#include "Riostream.h"
00007 
00008 ClassImp(TNArrayD)
00009 //______________________________________________________________________________
00010 //
00011 // TNArrayD  ROOT class for multidimensional arrays of Double_t
00012 //
00013 //   up to dimension 6
00014 //   book one place more for overflow
00015 //   detects overflow
00016 //
00017 TNArrayD::TNArrayD(const TNArrayD &orig) {
00018 //copy constructor
00019   fNd = orig.fNd;
00020   fN1 = orig.fN1;
00021   fN2 = orig.fN2;
00022   fN3 = orig.fN3;
00023   fN4 = orig.fN4;
00024   fN5 = orig.fN5;
00025   fN6 = orig.fN6;
00026   fNL = orig.fNL;
00027   fA  = new Double_t [fNL];
00028   for (Int_t i=0;i<fNL;i++) fA[i] = orig.fA[i];
00029 }
00030 TNArrayD::TNArrayD(Int_t n1) {
00031 //constructor for a 1 dimensional array of size n1. Array is put to 0
00032   const Double_t zero = 0.0;
00033   Init();
00034   fNd  = 1;
00035   fN1  = n1;
00036   fNL  = n1 + 1;
00037   fA   = new Double_t [fNL];
00038   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00039 }
00040 TNArrayD::TNArrayD(Int_t n1,Int_t n2) {
00041 //constructor for a 2 dimensional array of sizes n1,n2. Array is put to 0
00042   const Double_t zero = 0.0;
00043   Init();
00044   fNd = 2;
00045   fN1 = n1;
00046   fN2 = n2;
00047   fNL = n1*n2 + 1;
00048   fA  = new Double_t [fNL];
00049   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00050 }
00051 TNArrayD::TNArrayD(Int_t n1,Int_t n2,Int_t n3) {
00052 //constructor 3 dimensional array of sizes n1,n2,n3. Array is put to 0
00053   const Double_t zero = 0.0;
00054   Init();
00055   fNd  = 3;
00056   fN1  = n1;
00057   fN2  = n2;
00058   fN3  = n3;
00059   fNL  = n1*n2*n3 + 1;
00060   fA   = new Double_t [fNL];
00061   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00062 }
00063 TNArrayD::TNArrayD(Int_t n1,Int_t n2,Int_t n3,Int_t n4) {
00064 //constructor for a 4 dimensional array of sizes n1,n2,n3,n4. Array is put to 0
00065   const Double_t zero = 0.0;
00066   Init();
00067   fNd  = 4;
00068   fN1  = n1;
00069   fN2  = n2;
00070   fN3  = n3;
00071   fN4  = n4;
00072   fNL  = n1*n2*n3*n4 + 1;
00073   fA   = new Double_t [fNL];
00074   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00075 }
00076 TNArrayD::TNArrayD(Int_t n1,Int_t n2,Int_t n3,Int_t n4,Int_t n5) {
00077 //constructor for a 5 dimensional array of sizes n1,n2,n3,n4,n5. Array is put to 0
00078   const Double_t zero = 0.0;
00079   Init();
00080   fNd  = 5;
00081   fN1  = n1;
00082   fN2  = n2;
00083   fN3  = n3;
00084   fN4  = n4;
00085   fN5  = n5;
00086   fNL  = n1*n2*n3*n4*n5 + 1;
00087   fA   = new Double_t [fNL];
00088   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00089 }
00090 TNArrayD::TNArrayD(Int_t n1,Int_t n2,Int_t n3,Int_t n4,Int_t n5,Int_t n6) {
00091 //constructor for a 6 dimensional array of sizes n1,n2,n3,n4,n5,n6. Array is put to 0
00092   const Double_t zero = 0.0;
00093   Init();
00094   fNd  = 6;
00095   fN1  = n1;
00096   fN2  = n2;
00097   fN3  = n3;
00098   fN4  = n4;
00099   fN5  = n5;
00100   fN6  = n6;
00101   fNL  = n1*n2*n3*n4*n5*n6 + 1;
00102   fA   = new Double_t [fNL];
00103   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00104 }
00105 TNArrayD::~TNArrayD() {
00106 //destructor
00107   Clean();
00108 }
00109 void TNArrayD::Clean() {
00110 //
00111   if (fA) delete [] fA;
00112   Init();
00113 }
00114 void TNArrayD::Init() {
00115 //Initialization
00116   fNd  = 0;
00117   fN1  = 1;
00118   fN2  = 1;
00119   fN3  = 1;
00120   fN4  = 1;
00121   fN5  = 1;
00122   fN6  = 1;
00123   fNL  = 0;
00124   fA   = 0;
00125 }
00126 inline Int_t TNArrayD::OneDim(Int_t i1) const {
00127 //Index from 1 dimension to 1 dimension
00128   if ((i1>=fNL - 1) || (i1<0)) {
00129     i1 = fNL - 1;
00130     Error("OneDim","Index outside bounds");
00131     //cout << "i1  = " << i1
00132     // << "; fNL = " << fNL << endl;
00133   }
00134   return i1;
00135 }
00136 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2) const {
00137 //Index from 2 dimension to 1 dimension
00138   Int_t i;
00139   i = i1 + fN1*i2;
00140   if ((i>=fNL - 1) || (i<0)) {
00141     i = fNL - 1;
00142     Error("OneDim","Index outside bounds");
00143     //cout << "i1  = " << i1  << ", i2 = "  << i2
00144     //   << "; fN1 = " << fN1 << ", fNL = " << fNL << endl;
00145   }
00146   return i;
00147 }
00148 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2,Int_t i3) const {
00149 //Index from 3 dimension to 1 dimension
00150   Int_t i;
00151   i = i1 + fN1*(i2 + fN2*i3);
00152   if ((i>=fNL - 1) || (i<0)) {
00153     i = fNL - 1;
00154     Error("OneDim","Index outside bounds");
00155     //cout << "i1  = " << i1  << ", i2 = "  << i2  << ", i3 = "  << i3
00156     // << "; fN1 = " << fN1 << ", fN2 = " << fN2 << ", fNL = " << fNL << endl;
00157   }
00158   return i;
00159 }
00160 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2,Int_t i3,Int_t i4) const {
00161 //Index from 4 dimension to 1 dimension
00162   Int_t i;
00163   i = i1 + fN1*(i2 + fN2*(i3 + fN3*i4));
00164   if ((i>=fNL - 1) || (i<0)) {
00165     i = fNL - 1;
00166     Error("OneDim","Index outside bounds");
00167   }
00168   return i;
00169 }
00170 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2,Int_t i3,Int_t i4,Int_t i5) const {
00171 //Index from 5 dimension to 1 dimension
00172   Int_t i;
00173   i = i1 + fN1*(i2 + fN2*(i3 + fN3*(i4 + fN4*i5)));
00174   if ((i>=fNL - 1) || (i<0)) {
00175     i = fNL - 1;
00176     Error("OneDim","Index outside bounds");
00177   }
00178   return i;
00179 }
00180 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2,Int_t i3,Int_t i4,Int_t i5,Int_t i6) const {
00181 //Index from 6 dimension to 1 dimension
00182   Int_t i;
00183   i = i1 + fN1*(i2 + fN2*(i3 + fN3*(i4 + fN4*(i5 + fN5*i6))));
00184   if ((i>=fNL - 1) || (i<0)) {
00185     i = fNL - 1;
00186     Error("OneDim","Index outside bounds");
00187   }
00188   return i;
00189 }
00190 void TNArrayD::ReSet(Int_t n1) {
00191 //Reset this to be 1 dimensional of dimension n1
00192   const Double_t zero = 0.0;
00193   Clean();
00194   fNd  = 1;
00195   fN1  = n1;
00196   fNL  = n1 + 1;
00197   fA   = new Double_t [fNL];
00198   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00199 }
00200 void TNArrayD::ReSet(Int_t n1,Int_t n2) {
00201 //Reset this to be 2 dimensional of dimension n1,n2
00202   const Double_t zero = 0.0;
00203   Clean();
00204   fNd  = 2;
00205   fN1  = n1;
00206   fN2  = n2;
00207   fNL  = n1*n2 + 1;
00208   fA   = new Double_t [fNL];
00209   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00210 }
00211 void TNArrayD::ReSet(Int_t n1,Int_t n2,Int_t n3) {
00212 //Reset this to be 3 dimensional of dimension n1,n2,n3
00213   const Double_t zero = 0.0;
00214   Clean();
00215   fNd  = 3;
00216   fN1  = n1;
00217   fN2  = n2;
00218   fN3  = n3;
00219   fNL  = n1*n2*n3 + 1;
00220   fA   = new Double_t [fNL];
00221   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00222 }
00223 void TNArrayD::ReSet(Int_t n1,Int_t n2,Int_t n3,Int_t n4) {
00224 //Reset this to be 4 dimensional of dimension n1,n2,n3,n4
00225   const Double_t zero = 0.0;
00226   Clean();
00227   fNd  = 4;
00228   fN1  = n1;
00229   fN2  = n2;
00230   fN3  = n3;
00231   fN4  = n4;
00232   fNL  = n1*n2*n3*n4 + 1;
00233   fA   = new Double_t [fNL];
00234   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00235 }
00236 void TNArrayD::ReSet(Int_t n1,Int_t n2,Int_t n3,Int_t n4,Int_t n5) {
00237 //Reset this to be 5 dimensional of dimension n1,n2,n3,n4,n5
00238   const Double_t zero = 0.0;
00239   Clean();
00240   fNd  = 5;
00241   fN1  = n1;
00242   fN2  = n2;
00243   fN3  = n3;
00244   fN4  = n4;
00245   fN5  = n5;
00246   fNL  = n1*n2*n3*n4*n5 + 1;
00247   fA   = new Double_t [fNL];
00248   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00249 }
00250 void TNArrayD::ReSet(Int_t n1,Int_t n2,Int_t n3,Int_t n4,Int_t n5,Int_t n6) {
00251 //Reset this to be 6 dimensional of dimension n1,n2,n3,n4,n5,n6
00252   const Double_t zero = 0.0;
00253   Clean();
00254   fNd  = 6;
00255   fN1  = n1;
00256   fN2  = n2;
00257   fN3  = n3;
00258   fN4  = n4;
00259   fN5  = n5;
00260   fN6  = n6;
00261   fNL  = n1*n2*n3*n4*n5*n6 + 1;
00262   fA   = new Double_t [fNL];
00263   for (Int_t i=0;i<fNL;i++) fA[i] = zero;
00264 }
00265 const Double_t &TNArrayD::operator()(Int_t i1) const {
00266   Int_t i;
00267   i = OneDim(i1);
00268   return fA[i];
00269 }
00270 const Double_t &TNArrayD::operator()(Int_t i1,Int_t i2) const {
00271   Int_t i;
00272   i = OneDim(i1,i2);
00273   return fA[i];
00274 }
00275 const Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3) const {
00276   Int_t i;
00277   i = OneDim(i1,i2,i3);
00278   return fA[i];
00279 }
00280 const Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3,Int_t i4) const {
00281   Int_t i;
00282   i = OneDim(i1,i2,i3,i4);
00283   return fA[i];
00284 }
00285 const Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3,Int_t i4,Int_t i5) const {
00286   Int_t i;
00287   i = OneDim(i1,i2,i3,i4,i5);
00288   return fA[i];
00289 }
00290 const Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3,Int_t i4,Int_t i5,Int_t i6) const {
00291   Int_t i;
00292   i = OneDim(i1,i2,i3,i4,i5,i6);
00293   return fA[i];
00294 }
00295 Double_t &TNArrayD::operator()(Int_t i1)
00296 {
00297    return (Double_t&)((*(const TNArrayD *)this)(i1));
00298 }
00299 Double_t &TNArrayD::operator()(Int_t i1,Int_t i2)
00300 {
00301    return (Double_t&)((*(const TNArrayD *)this)(i1,i2));
00302 }
00303 Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3)
00304 {
00305    return (Double_t&)((*(const TNArrayD *)this)(i1,i2,i3));
00306 }
00307 Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3,Int_t i4)
00308 {
00309    return (Double_t&)((*(const TNArrayD *)this)(i1,i2,i3,i4));
00310 }
00311 Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3,Int_t i4,Int_t i5)
00312 {
00313    return (Double_t&)((*(const TNArrayD *)this)(i1,i2,i3,i4,i5));
00314 }
00315 Double_t &TNArrayD::operator()(Int_t i1,Int_t i2,Int_t i3,Int_t i4,Int_t i5,Int_t i6)
00316 {
00317    return (Double_t&)((*(const TNArrayD *)this)(i1,i2,i3,i4,i5,i6));
00318 }
00319 

Generated on Tue Jun 9 17:25:17 2009 for CMSSW by  doxygen 1.5.4