00001
00002
00003
00004
00005 #include "CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/interface/TNArrayD.h"
00006
00007
00008 ClassImp(TNArrayD)
00009
00010
00011
00012
00013
00014
00015
00016
00017 TNArrayD::TNArrayD(const TNArrayD &orig) {
00018
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
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
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
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
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
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
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
00107 Clean();
00108 }
00109 void TNArrayD::Clean() {
00110
00111 if (fA) delete [] fA;
00112 Init();
00113 }
00114 void TNArrayD::Init() {
00115
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
00128 if ((i1>=fNL - 1) || (i1<0)) {
00129 i1 = fNL - 1;
00130 Error("OneDim","Index outside bounds");
00131
00132
00133 }
00134 return i1;
00135 }
00136 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2) const {
00137
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
00144
00145 }
00146 return i;
00147 }
00148 inline Int_t TNArrayD::OneDim(Int_t i1,Int_t i2,Int_t i3) const {
00149
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
00156
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
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
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
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
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
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
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
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
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
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