Go to the documentation of this file.00001
00002
00010 #include <sstream>
00011 #include <iomanip>
00012
00013 #include "DataFormats/EcalDetId/interface/EEDetId.h"
00014 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
00015
00016 #include "DQM/EcalCommon/interface/NumbersPn.h"
00017
00018
00019
00020
00021 int NumbersPn::ipnEE( const int ism, const int ipnid ) throw( std::runtime_error ) {
00022
00023 if( ism >=1 && ism <= 18 ) {
00024
00025 int myFED = -1;
00026
00027 if( ism == 1 ) myFED = 0;
00028 if( ism == 2 ) myFED = 1;
00029 if( ism == 5 ) myFED = 2;
00030 if( ism == 6 ) myFED = 3;
00031 if( ism == 10 ) myFED = 4;
00032 if( ism == 11 ) myFED = 5;
00033 if( ism == 14 ) myFED = 6;
00034 if( ism == 15 ) myFED = 7;
00035
00036 return 10*myFED + (ipnid-1);
00037
00038 } else {
00039
00040 std::ostringstream s;
00041 s << "Wrong SM id determination: iSM = " << ism;
00042 throw( std::runtime_error( s.str() ) );
00043
00044 }
00045
00046 }
00047
00048
00049
00050
00051 void NumbersPn::getPNs( const int ism, const int ix, const int iy, std::vector<int>& PNsInLM ) throw( std::runtime_error ) {
00052
00053 int ilm = NumbersPn::iLM(ism, ix, iy );
00054
00055 PNsInLM.clear();
00056
00057 if( ilm == 0 ) {
00058 PNsInLM.push_back(25);
00059 PNsInLM.push_back(26);
00060 PNsInLM.push_back(27);
00061 PNsInLM.push_back(28);
00062
00063 PNsInLM.push_back(30);
00064 PNsInLM.push_back(31);
00065 PNsInLM.push_back(32);
00066 PNsInLM.push_back(33);
00067
00068 return;
00069 }
00070 if( ilm == 1 ) {
00071 PNsInLM.push_back(25);
00072 PNsInLM.push_back(26);
00073 PNsInLM.push_back(27);
00074 PNsInLM.push_back(28);
00075
00076 PNsInLM.push_back(30);
00077 PNsInLM.push_back(31);
00078 PNsInLM.push_back(32);
00079 PNsInLM.push_back(33);
00080
00081 return;
00082 }
00083 if( ilm == 2 ) {
00084 PNsInLM.push_back(20);
00085 PNsInLM.push_back(21);
00086
00087 PNsInLM.push_back(23);
00088 PNsInLM.push_back(24);
00089
00090 PNsInLM.push_back(35);
00091 PNsInLM.push_back(36);
00092 PNsInLM.push_back(37);
00093 PNsInLM.push_back(38);
00094 PNsInLM.push_back(39);
00095
00096 return;
00097 }
00098 if( ilm == 3 ) {
00099 PNsInLM.push_back(20);
00100 PNsInLM.push_back(21);
00101
00102 PNsInLM.push_back(23);
00103 PNsInLM.push_back(24);
00104
00105 PNsInLM.push_back(35);
00106 PNsInLM.push_back(36);
00107 PNsInLM.push_back(37);
00108 PNsInLM.push_back(38);
00109 PNsInLM.push_back(39);
00110
00111 return;
00112 }
00113 if( ilm == 4 ) {
00114 PNsInLM.push_back(20);
00115 PNsInLM.push_back(21);
00116
00117 PNsInLM.push_back(23);
00118 PNsInLM.push_back(24);
00119
00120 PNsInLM.push_back(35);
00121 PNsInLM.push_back(36);
00122 PNsInLM.push_back(37);
00123 PNsInLM.push_back(38);
00124 PNsInLM.push_back(39);
00125
00126 return;
00127 }
00128 if( ilm == 5 ) {
00129 PNsInLM.push_back(0);
00130 PNsInLM.push_back(1);
00131 PNsInLM.push_back(2);
00132 PNsInLM.push_back(4);
00133
00134
00135 PNsInLM.push_back(14);
00136 PNsInLM.push_back(15);
00137 PNsInLM.push_back(16);
00138 PNsInLM.push_back(17);
00139 PNsInLM.push_back(18);
00140
00141 return;
00142 }
00143 if( ilm == 6 ) {
00144 PNsInLM.push_back(0);
00145 PNsInLM.push_back(1);
00146 PNsInLM.push_back(2);
00147 PNsInLM.push_back(4);
00148
00149
00150 PNsInLM.push_back(14);
00151 PNsInLM.push_back(15);
00152 PNsInLM.push_back(16);
00153 PNsInLM.push_back(17);
00154 PNsInLM.push_back(18);
00155
00156 return;
00157 }
00158 if( ilm == 7 ) {
00159 PNsInLM.push_back(0);
00160 PNsInLM.push_back(1);
00161 PNsInLM.push_back(2);
00162 PNsInLM.push_back(4);
00163
00164 PNsInLM.push_back(15);
00165 PNsInLM.push_back(16);
00166 PNsInLM.push_back(17);
00167 PNsInLM.push_back(18);
00168
00169 return;
00170 }
00171 if( ilm == 8 ) {
00172 PNsInLM.push_back(5);
00173 PNsInLM.push_back(6);
00174 PNsInLM.push_back(7);
00175 PNsInLM.push_back(8);
00176
00177 PNsInLM.push_back(11);
00178 PNsInLM.push_back(12);
00179
00180 return;
00181 }
00182 if( ilm == 9 ) {
00183 PNsInLM.push_back(5);
00184 PNsInLM.push_back(6);
00185 PNsInLM.push_back(7);
00186 PNsInLM.push_back(8);
00187
00188 PNsInLM.push_back(11);
00189 PNsInLM.push_back(12);
00190
00191 return;
00192 }
00193 if( ilm == 10 ) {
00194 PNsInLM.push_back(65);
00195 PNsInLM.push_back(66);
00196 PNsInLM.push_back(67);
00197 PNsInLM.push_back(68);
00198
00199 PNsInLM.push_back(70);
00200 PNsInLM.push_back(71);
00201 PNsInLM.push_back(72);
00202 PNsInLM.push_back(73);
00203
00204 return;
00205 }
00206 if( ilm == 11 ) {
00207 PNsInLM.push_back(65);
00208 PNsInLM.push_back(66);
00209 PNsInLM.push_back(67);
00210 PNsInLM.push_back(68);
00211
00212 PNsInLM.push_back(70);
00213 PNsInLM.push_back(71);
00214 PNsInLM.push_back(72);
00215 PNsInLM.push_back(73);
00216
00217 return;
00218 }
00219 if( ilm == 12 ) {
00220 PNsInLM.push_back(60);
00221 PNsInLM.push_back(61);
00222 PNsInLM.push_back(62);
00223 PNsInLM.push_back(63);
00224 PNsInLM.push_back(64);
00225
00226 PNsInLM.push_back(75);
00227 PNsInLM.push_back(76);
00228 PNsInLM.push_back(78);
00229 PNsInLM.push_back(79);
00230
00231 return;
00232 }
00233 if( ilm == 13 ) {
00234 PNsInLM.push_back(60);
00235 PNsInLM.push_back(61);
00236 PNsInLM.push_back(62);
00237 PNsInLM.push_back(63);
00238 PNsInLM.push_back(64);
00239 PNsInLM.push_back(69);
00240
00241 PNsInLM.push_back(74);
00242 PNsInLM.push_back(75);
00243 PNsInLM.push_back(76);
00244 PNsInLM.push_back(77);
00245 PNsInLM.push_back(78);
00246 PNsInLM.push_back(79);
00247
00248 return;
00249 }
00250 if( ilm == 14 ) {
00251 PNsInLM.push_back(60);
00252 PNsInLM.push_back(61);
00253 PNsInLM.push_back(62);
00254 PNsInLM.push_back(63);
00255 PNsInLM.push_back(64);
00256 PNsInLM.push_back(69);
00257
00258 PNsInLM.push_back(74);
00259 PNsInLM.push_back(75);
00260 PNsInLM.push_back(76);
00261 PNsInLM.push_back(77);
00262 PNsInLM.push_back(78);
00263 PNsInLM.push_back(79);
00264
00265 return;
00266 }
00267 if( ilm == 15 ) {
00268 PNsInLM.push_back(40);
00269 PNsInLM.push_back(41);
00270 PNsInLM.push_back(42);
00271 PNsInLM.push_back(43);
00272 PNsInLM.push_back(44);
00273 PNsInLM.push_back(49);
00274
00275 PNsInLM.push_back(54);
00276 PNsInLM.push_back(55);
00277 PNsInLM.push_back(56);
00278 PNsInLM.push_back(57);
00279 PNsInLM.push_back(58);
00280 PNsInLM.push_back(59);
00281
00282 return;
00283 }
00284 if( ilm == 16 ) {
00285 PNsInLM.push_back(40);
00286 PNsInLM.push_back(41);
00287 PNsInLM.push_back(42);
00288 PNsInLM.push_back(43);
00289 PNsInLM.push_back(44);
00290 PNsInLM.push_back(49);
00291
00292 PNsInLM.push_back(54);
00293 PNsInLM.push_back(55);
00294 PNsInLM.push_back(56);
00295 PNsInLM.push_back(57);
00296 PNsInLM.push_back(58);
00297 PNsInLM.push_back(59);
00298
00299 return;
00300 }
00301 if( ilm == 17 ) {
00302 PNsInLM.push_back(40);
00303 PNsInLM.push_back(41);
00304 PNsInLM.push_back(42);
00305 PNsInLM.push_back(43);
00306 PNsInLM.push_back(44);
00307
00308 PNsInLM.push_back(55);
00309 PNsInLM.push_back(56);
00310 PNsInLM.push_back(58);
00311 PNsInLM.push_back(59);
00312
00313 return;
00314 }
00315 if( ilm == 18 ) {
00316 PNsInLM.push_back(45);
00317 PNsInLM.push_back(46);
00318 PNsInLM.push_back(47);
00319 PNsInLM.push_back(48);
00320
00321 PNsInLM.push_back(50);
00322 PNsInLM.push_back(51);
00323 PNsInLM.push_back(52);
00324 PNsInLM.push_back(53);
00325
00326 return;
00327 }
00328 if( ilm == 19 ) {
00329 PNsInLM.push_back(45);
00330 PNsInLM.push_back(46);
00331 PNsInLM.push_back(47);
00332 PNsInLM.push_back(48);
00333
00334 PNsInLM.push_back(50);
00335 PNsInLM.push_back(51);
00336 PNsInLM.push_back(52);
00337 PNsInLM.push_back(53);
00338
00339 return;
00340 }
00341
00342 std::ostringstream s;
00343 s << "Wrong LM id determination: iLM = " << ilm;
00344 throw( std::runtime_error( s.str() ) );
00345
00346 }
00347
00348
00349
00350
00351 int NumbersPn::iLM( const int ism, const int ix, const int iy ) throw( std::runtime_error ) {
00352
00353 int iz = 0;
00354
00355 if( ism >= 1 && ism <= 9 ) iz = -1;
00356 if( ism >= 10 && ism <= 18 ) iz = +1;
00357
00358 if( EEDetId::validDetId(ix, iy, iz) ) {
00359
00360
00361 if( ism == 1 ) return 7;
00362 if( ism == 2 ) return 8;
00363 if( ism == 3 ) return 9;
00364 if( ism == 4 ) return 0;
00365 if( ism == 5 ) return 1;
00366 if( ism == 6 ) return 2;
00367 if( ism == 7 ) return 3;
00368 if( ism == 8 ) {
00369 if(ix<=50) return 4;
00370 else return 5;
00371 }
00372 if( ism == 9 ) return 6;
00373
00374
00375 if( ism == 10 ) return 17;
00376 if( ism == 11 ) return 18;
00377 if( ism == 12 ) return 19;
00378 if( ism == 13 ) return 10;
00379 if( ism == 14 ) return 11;
00380 if( ism == 15 ) return 12;
00381 if( ism == 16 ) return 13;
00382 if( ism == 17 ) {
00383 if(ix<=50) return 14;
00384 else return 15;
00385 }
00386 if( ism == 18 ) return 16;
00387
00388 }
00389
00390 std::ostringstream s;
00391 s << "Wrong LM id determination: iSM = " << ism << " ix = " << ix << " iy = " << iy;
00392 throw( std::runtime_error( s.str() ) );
00393
00394 }
00395
00396
00397