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