CMS 3D CMS Logo

ME.cc
Go to the documentation of this file.
1 #include <cassert>
2 #include <cstdio>
3 #include <cstdlib>
4 #include <iostream>
5 #include <ctime>
6 
10 
11 //GHM ClassImp(ME)
12 
13 using namespace std;
14 
15 const ME::TimeStamp ME::kLowMask = 0xFFFFFFFF;
16 
17 const TString ME::granularity[ME::iSizeG] = {"R", "SM", "LMR", "LMM", "SC", "C"};
18 
19 const TString ME::APDPrimVar[ME::iSizeAPD] = {"FLAG",
20  "MEAN",
21  "RMS",
22  "M3",
23  "APD_OVER_PNA_MEAN",
24  "APD_OVER_PNA_RMS",
25  "APD_OVER_PNA_M3",
26  "APD_OVER_PNB_MEAN",
27  "APD_OVER_PNB_RMS",
28  "APD_OVER_PNB_M3",
29  "APD_OVER_PN_MEAN",
30  "APD_OVER_PN_RMS",
31  "APD_OVER_PN_M3",
32  "SHAPE_COR",
33  "ALPHA",
34  "BETA",
35  "TIME_MEAN",
36  "TIME_RMS",
37  "TIME_M3",
38  "TIME_NEVT"};
39 
40 const TString ME::PNPrimVar[ME::iSizePN] = {
41  "FLAG",
42  "MEAN",
43  "RMS",
44  "M3",
45  "PNA_OVER_PNB_MEAN",
46  "PNA_OVER_PNB_RMS",
47  "PNA_OVER_PNB_M3",
48 };
49 
50 const TString ME::MTQPrimVar[ME::iSizeMTQ] = {
51  "FIT_METHOD", "MTQ_AMPL", "MTQ_TIME", "MTQ_RISE", "MTQ_FWHM", "MTQ_FW20", "MTQ_FW80", "MTQ_SLIDING"};
52 
53 const TString ME::TPAPDPrimVar[ME::iSizeTPAPD] = {"FLAG", "MEAN", "RMS", "M3", "NEVT"};
54 
55 const TString ME::TPPNPrimVar[ME::iSizeTPPN] = {"GAIN", "MEAN", "RMS", "M3"};
56 
57 const TString ME::type[ME::iSizeT] = {"Laser", "TestPulse"};
58 
59 const TString ME::color[ME::iSizeC] = {"Blue", "Green", "Red", "IRed", "LED1", "LED2"};
60 
61 std::vector<MEChannel*> ME::_trees = std::vector<MEChannel*>(4, (MEChannel*)nullptr);
62 
63 const bool ME::useElectronicNumbering = false;
64 
65 TString ME::lmdataPath(int lmr) {
66  TString out_(std::getenv("MELMDAT"));
67  out_ += "/";
68  out_ += ME::smName(lmr);
69  out_ += "/";
70  return out_;
71 }
72 
73 TString ME::primPath(int lmr) {
74  TString out_(std::getenv("MESTORE"));
75  out_ += "/";
76  out_ += ME::smName(lmr);
77  out_ += "/";
78  return out_;
79 }
80 
81 TString ME::path() { return TString(std::getenv("MUSECAL")) + "/"; }
82 
84  // get the laser monitoring region and super-module
85  int lmr_ = ME::lmr(header.dcc, header.side);
86  TString outfile_ = primPath(lmr_);
87  outfile_ += "LMF_";
88  outfile_ += ME::smName(lmr_);
89  outfile_ += "_";
90  outfile_ += header.side;
91  if (settings.type == ME::iLaser) {
92  switch (settings.wavelength) {
93  case iBlue:
94  outfile_ += "_BlueLaser";
95  break;
96  case iGreen:
97  outfile_ += "_GreenLaser";
98  break;
99  case iRed:
100  outfile_ += "_RedLaser";
101  break;
102  case iIRed:
103  outfile_ += "_IRedLaser";
104  break;
105  default:
106  break;
107  }
108  } else if (settings.type == ME::iTestPulse) {
109  outfile_ += "_testPulse";
110  }
111  outfile_ += "_";
112  outfile_ += header.rundir.c_str();
113  outfile_ += "_TS";
114  outfile_ += header.ts_beg;
115  outfile_ += ".root";
116  return outfile_;
117 }
118 
119 TString ME::runListName(int lmr, int type, int color) {
120  TString outfile_ = primPath(lmr);
121  if (type == iLaser) {
122  outfile_ += "runlist_";
123  switch (color) {
124  case ME::iBlue:
125  outfile_ += "Blue_";
126  break;
127  case ME::iGreen:
128  outfile_ += "Red_";
129  break;
130  case ME::iRed:
131  outfile_ += "Red_";
132  break;
133  case ME::iIRed:
134  outfile_ += "IRed_";
135  break;
136  default:
137  abort();
138  }
139  outfile_ += "Laser";
140  } else if (type == iTestPulse) {
141  outfile_ += "runlist_Test_Pulse";
142  }
143  return outfile_;
144 }
145 
146 std::vector<ME::Time> ME::timeDiff(Time t1, Time t2, short int& sign) {
147  sign = 1;
148  // Time t1 = time_high( T1 );
149  // Time t2 = time_high( T2 );
150  Time dt_s(0);
151  if (t1 > t2) {
152  dt_s = t1 - t2;
153  } else {
154  sign = -1;
155  dt_s = t2 - t1;
156  }
157  Time dt_min = dt_s / 60;
158  Time n_s = dt_s - dt_min * 60;
159  Time dt_h = dt_min / 60;
160  Time n_min = dt_min - dt_h * 60;
161  Time dt_day = dt_h / 24;
162  Time n_h = dt_h - dt_day * 24;
163  Time n_day = dt_day;
164 
165  std::vector<Time> vec_;
166  vec_.push_back(n_day);
167  vec_.push_back(n_h);
168  vec_.push_back(n_min);
169  vec_.push_back(n_s);
170 
171  return vec_;
172 }
173 
174 float ME::timeDiff(Time t1, Time t0, int tunit) {
175  float sign = 1.;
176  Time dt(0);
177  if (t1 > t0) {
178  dt = t1 - t0;
179  } else {
180  sign = -1.;
181  dt = t0 - t1;
182  }
183  float dt_f = ((float)dt) * sign;
184  switch (tunit) {
185  case iDay:
186  return dt_f / 86400.;
187  break;
188  case iHour:
189  return dt_f / 3600.;
190  break;
191  case iMinute:
192  return dt_f / 60.;
193  break;
194  default:
195  return dt_f;
196  };
197  return 0;
198 }
199 
200 ME::Time ME::time(float dt, Time t0, int tunit) {
201  short int sign = 1;
202  if (dt < 0)
203  sign = -1;
204  float t_ = sign * dt;
205  switch (tunit) {
206  case iDay:
207  t_ *= 86400;
208  break;
209  case iHour:
210  t_ *= 3600;
211  break;
212  case iMinute:
213  t_ *= 60;
214  break;
215  };
216  ME::Time it_ = static_cast<ME::Time>(t_);
217  std::cout << "dt/it/t0/ " << dt << "/" << it_ << "/" << t0 << std::endl;
218  if (sign == 1)
219  return t0 + it_;
220  else
221  return t0 - it_;
222 }
223 
224 ME::Time ME::time_low(TimeStamp t) { return static_cast<Time>(kLowMask & t); }
225 
226 ME::Time ME::time_high(TimeStamp t) { return static_cast<Time>(t >> 32); }
227 
228 const TString ME::region[ME::iSizeE] = {"EE-", "EB-", "EB+", "EE+"};
229 
230 int ME::ecalRegion(int ilmr) {
231  assert(ilmr > 0 && ilmr <= 92);
232  if (ilmr <= 36)
233  return iEBM;
234  ilmr -= 36;
235  if (ilmr <= 36)
236  return iEBP;
237  ilmr -= 36;
238  if (ilmr <= 10)
239  return iEEP;
240  return iEEM;
241 }
242 
243 int ME::lmr(int idcc, int side) {
244  int ilmr = 0;
245 
246  assert(side == 0 || side == 1);
247 
248  if (idcc > 600)
249  idcc -= 600;
250  assert(idcc >= 1 && idcc <= 54);
251  int ireg;
252  if (idcc <= 9)
253  ireg = iEEM;
254  else {
255  idcc -= 9;
256  if (idcc <= 18)
257  ireg = iEBM;
258  else {
259  idcc -= 18;
260  if (idcc <= 18)
261  ireg = iEBP;
262  else {
263  idcc -= 18;
264  if (idcc <= 9)
265  ireg = iEEP;
266  else
267  abort();
268  }
269  }
270  }
271  if (ireg == iEEM || ireg == iEEP) {
272  if (side == 1 && idcc != 8) {
273  return -1;
274  }
275  ilmr = idcc;
276  if (idcc == 9)
277  ilmr++;
278  if (idcc == 8 && side == 1)
279  ilmr++;
280  } else if (ireg == iEBM || ireg == iEBP) {
281  ilmr = 2 * (idcc - 1) + side + 1;
282  } else
283  abort();
284 
285  if (ireg == iEBP)
286  ilmr += 36;
287  else if (ireg == iEEP)
288  ilmr += 72;
289  else if (ireg == iEEM)
290  ilmr += 82;
291 
292  return ilmr;
293 }
294 
295 std::pair<int, int> ME::dccAndSide(int ilmr) {
296  int idcc = 0;
297  int side = 0;
298 
299  int ireg = ecalRegion(ilmr);
300  if (ireg == iEEM)
301  ilmr -= 82;
302  else if (ireg == iEBP)
303  ilmr -= 36;
304  else if (ireg == iEEP)
305  ilmr -= 72;
306 
307  if (ireg == iEEM || ireg == iEEP) {
308  assert(ilmr >= 1 && ilmr <= 10);
309  side = 0;
310  idcc = ilmr;
311  if (ilmr >= 9)
312  idcc--;
313  if (ilmr == 9)
314  side = 1;
315  } else {
316  assert(ilmr >= 1 && ilmr <= 36);
317  idcc = (ilmr - 1) / 2 + 1;
318  side = (ilmr - 1) % 2;
319  }
320 
321  if (ireg > iEEM)
322  idcc += 9;
323  if (ireg > iEBM)
324  idcc += 18;
325  if (ireg > iEBP)
326  idcc += 18;
327 
328  // idcc += 600;
329 
330  return std::pair<int, int>(idcc, side);
331 }
332 
333 void ME::regionAndSector(int ilmr, int& ireg, int& ism, int& idcc, int& side) {
334  ireg = ecalRegion(ilmr);
335 
336  std::pair<int, int> ipair_ = dccAndSide(ilmr);
337  idcc = ipair_.first;
338  side = ipair_.second;
339 
340  ism = 0;
341  if (ireg == iEEM || ireg == iEEP) {
342  if (idcc > 600)
343  idcc -= 600; // also works with FEDids
344  if (idcc >= 1 && idcc <= 9) {
345  ism = 6 + idcc;
346  if (ism > 9)
347  ism -= 9;
348  ism += 9;
349  } else if (idcc >= 46 && idcc <= 54) {
350  ism = idcc - 46 + 7;
351  if (ism > 9)
352  ism -= 9;
353  } else
354  abort();
355  } else if (ireg == iEBM || ireg == iEBP) {
356  if (idcc > 600)
357  idcc -= 600; // also works with FEDids
358  assert(idcc >= 10 && idcc <= 45);
359  ism = idcc - 9;
360  if (ism > 18)
361  ism -= 18;
362  else
363  ism += 18;
364  } else
365  abort();
366 }
367 
368 TString ME::smName(int ireg, int ism) {
369  TString out;
370  if (ireg == ME::iEEM || ireg == ME::iEEP) {
371  assert(ism >= 1 && ism <= 18);
372  out = "EE+";
373  if (ireg == ME::iEEM)
374  out = "EE-";
375  if (ism > 9)
376  ism -= 9;
377  out += ism;
378  } else if (ireg == ME::iEBM || ireg == ME::iEBP) {
379  assert(ism >= 1 && ism <= 36);
380  out = "EB+";
381  if (ism > 18) {
382  out = "EB-";
383  ism -= 18;
384  }
385  out += ism;
386  } else
387  abort();
388  return out;
389 }
390 
391 TString ME::smName(int ilmr) {
392  TString out;
393  int reg_(0);
394  int sm_(0);
395  int dcc_(0);
396  int side_(0);
397  ME::regionAndSector(ilmr, reg_, sm_, dcc_, side_);
398  out = smName(reg_, sm_);
399  return out;
400 }
401 
402 TString ME::smNameFromDcc(int idcc) {
403  int ilmr = lmr(idcc, 0);
404  return smName(ilmr);
405 }
406 
407 MEChannel* ME::lmrTree(int ilmr) { return regTree(ecalRegion(ilmr))->getDescendant(iLMRegion, ilmr); }
408 
409 MEChannel* ME::regTree(int ireg) {
410  assert(ireg >= iEEM && ireg <= iEEP);
411  if (_trees[ireg] != nullptr)
412  return _trees[ireg];
413 
414  int iEcalRegion_ = ireg;
415  int iSector_ = 0;
416  int iLMRegion_ = 0;
417  int iLMModule_ = 0;
418  int iSuperCrystal_ = 0;
419  int iCrystal_ = 0;
420  MEChannel* leaf_(nullptr);
421  MEChannel* tree_(nullptr);
422 
423  if (iEcalRegion_ == iEBM || iEcalRegion_ == iEBP) {
424  for (int isect = 1; isect <= 18; isect++) {
425  iSector_ = isect;
426  if (iEcalRegion_ == iEBM)
427  iSector_ += 18;
428  if (_trees[iEcalRegion_] == nullptr) {
429  // std::cout << "Building the tree of crystals -- "
430  // << ME::region[iEcalRegion_];
431  _trees[iEcalRegion_] = new MEChannel(0, 0, iEcalRegion_, nullptr);
432  }
433  tree_ = _trees[iEcalRegion_];
434  for (int iX = 0; iX < 17; iX++) {
435  for (int iY = 0; iY < 4; iY++) {
436  iSuperCrystal_ = MEEBGeom::tt_channel(iX, iY);
437  iLMModule_ = MEEBGeom::lm_channel(iX, iY);
438  for (int jx = 0; jx < 5; jx++) {
439  for (int jy = 0; jy < 5; jy++) {
440  int ix = 5 * iX + jx;
441  int iy = 5 * iY + jy;
442  if (useElectronicNumbering) {
443  iCrystal_ = MEEBGeom::electronic_channel(ix, iy);
444  } else {
445  iCrystal_ = MEEBGeom::crystal_channel(ix, iy);
446  }
447  MEEBGeom::EtaPhiCoord globalCoord = MEEBGeom::globalCoord(iSector_, ix, iy);
448  int ieta = globalCoord.first;
449  int iphi = globalCoord.second;
450  iLMRegion_ = MEEBGeom::lmr(ieta, iphi);
451  leaf_ = tree_;
452  leaf_ = leaf_->getDaughter(ieta, iphi, iSector_);
453  leaf_ = leaf_->getDaughter(ieta, iphi, iLMRegion_);
454  leaf_ = leaf_->getDaughter(ieta, iphi, iLMModule_);
455  leaf_ = leaf_->getDaughter(ieta, iphi, iSuperCrystal_);
456  leaf_->getDaughter(ieta, iphi, iCrystal_);
457  }
458  }
459  }
460  }
461  }
462  } else if (iEcalRegion_ == iEEM || iEcalRegion_ == iEEP) {
463  int iz = 1;
464  if (iEcalRegion_ == iEEM)
465  iz = -1;
466  if (_trees[iEcalRegion_] == nullptr) {
467  // std::cout << "Building the tree of crystals -- "
468  // << ME::region[iEcalRegion_];
469  _trees[iEcalRegion_] = new MEChannel(0, 0, iEcalRegion_, nullptr);
470  }
471  tree_ = _trees[iEcalRegion_];
472 
473  for (int ilmr = 72; ilmr <= 92; ilmr++) // force the order of Monitoring Regions
474  {
475  if (ecalRegion(ilmr) != iEcalRegion_)
476  continue;
477  for (int ilmm = 1; ilmm <= 19; ilmm++) // force the order of Monitoring Modules
478  {
479  for (int iXX = 1; iXX <= 10; iXX++) {
480  for (int iside = 1; iside <= 2; iside++) // symmetrize wrt y-axis
481  {
482  int iX = iXX;
483  if (iside == 2)
484  iX = 20 - iXX + 1;
485  for (int iY = 1; iY <= 20; iY++) {
486  //int iSector_ = MEEEGeom::sector( iX, iY );
487  int iSector_ = MEEEGeom::sm(iX, iY, iz);
488  if (iSector_ < 0)
489  continue;
490  iLMRegion_ = MEEEGeom::lmr(iX, iY, iz);
491  if (iLMRegion_ != ilmr)
492  continue;
493  iLMModule_ = MEEEGeom::lmmod(iX, iY);
494  if (iLMModule_ != ilmm)
495  continue;
496  iSuperCrystal_ = MEEEGeom::sc(iX, iY);
497 
498  for (int jxx = 1; jxx <= 5; jxx++) {
499  int jx = jxx; // symmetrize...
500  if (iside == 2)
501  jx = 5 - jxx + 1;
502 
503  for (int jy = 1; jy <= 5; jy++) {
504  int ix = 5 * (iX - 1) + jx;
505  int iy = 5 * (iY - 1) + jy;
506  iCrystal_ = MEEEGeom::crystal(ix, iy);
507  if (iCrystal_ < 0)
508  continue;
509  leaf_ = tree_;
510  leaf_ = leaf_->getDaughter(ix, iy, iSector_);
511  leaf_ = leaf_->getDaughter(ix, iy, iLMRegion_);
512  leaf_ = leaf_->getDaughter(ix, iy, iLMModule_);
513  leaf_ = leaf_->getDaughter(ix, iy, iSuperCrystal_);
514  leaf_->getDaughter(ix, iy, iCrystal_);
515  }
516  }
517  }
518  }
519  }
520  }
521  }
522  }
523  // std::cout << ".... done" << std::endl;
524  return _trees[iEcalRegion_];
525 }
526 
527 bool ME::isBarrel(int ilmr) {
528  int reg_ = ecalRegion(ilmr);
529  if (reg_ == iEEM || reg_ == iEEP)
530  return false;
531  else if (reg_ == iEBM || reg_ == iEBP)
532  return true;
533  else
534  abort();
535  return true;
536 }
537 
538 std::pair<int, int> ME::memFromLmr(int ilmr) {
539  if (isBarrel(ilmr))
540  return MEEBGeom::memFromLmr(ilmr);
541  else
542  return MEEEGeom::memFromLmr(ilmr);
543  return std::pair<int, int>();
544 }
545 std::vector<int> ME::apdRefChannels(int ilmmod, int ilmr) {
546  if (isBarrel(ilmr))
547  return MEEBGeom::apdRefChannels(ilmmod);
548  else
549  return MEEEGeom::apdRefChannels(ilmmod);
550  return std::vector<int>();
551 }
552 
553 std::vector<int> ME::lmmodFromLmr(int ilmr) {
554  if (isBarrel(ilmr))
555  return MEEBGeom::lmmodFromLmr(ilmr);
556  else
557  return MEEEGeom::lmmodFromLmr(ilmr);
558  return std::vector<int>();
559 }
560 
561 std::vector<int> ME::memFromDcc(int idcc) {
562  std::vector<int> vec;
563  for (int iside = 0; iside <= 1; iside++) {
564  int ilmr = lmr(idcc, iside);
565  if (ilmr < 0)
566  continue;
567  std::pair<int, int> mem_ = memFromLmr(ilmr);
568  vec.push_back(mem_.first);
569  vec.push_back(mem_.second);
570  }
571  return vec;
572 }
573 
574 std::vector<int> ME::lmmodFromDcc(int idcc) {
575  std::vector<int> vec;
576  for (int iside = 0; iside <= 1; iside++) {
577  int ilmr = lmr(idcc, iside);
578  if (ilmr < 0)
579  continue;
580  bool isBarrel_ = isBarrel(ilmr);
581  std::vector<int> vec_ = lmmodFromLmr(ilmr);
582  for (unsigned ii = 0; ii < vec_.size(); ii++) {
583  int ilmmod_ = vec_[ii];
584  if (!isBarrel_) {
585  // special case for Julie
586  if (ilmmod_ == 18 && iside == 1)
587  ilmmod_ = 20;
588  if (ilmmod_ == 19 && iside == 1)
589  ilmmod_ = 21;
590  }
591  vec.push_back(ilmmod_);
592  }
593  }
594  return vec;
595 }
596 
597 std::pair<int, int> ME::pn(int ilmr, int ilmmod, ME::PN ipn) {
598  std::pair<int, int> pnpair_(0, 0);
599  std::pair<int, int> mempair_ = memFromLmr(ilmr);
600  if (isBarrel(ilmr)) {
601  pnpair_ = MEEBGeom::pn(ilmmod);
602  } else {
603  int dee_ = MEEEGeom::dee(ilmr);
604  pnpair_ = MEEEGeom::pn(dee_, ilmmod);
605  }
606  int mem_(0);
607  int pn_(0);
608  if (ipn == iPNA) {
609  mem_ = mempair_.first;
610  pn_ = pnpair_.first;
611  } else {
612  mem_ = mempair_.second;
613  pn_ = pnpair_.second;
614  }
615  return std::pair<int, int>(mem_, pn_);
616 }
static std::pair< int, int > memFromLmr(int ilmr)
Definition: MEEEGeom.cc:1128
static void regionAndSector(int ilmr, int &ireg, int &isect, int &idcc, int &iside)
Definition: ME.cc:333
float dt
Definition: AMPTWrapper.h:136
static int lmmod(SuperCrysCoord iX, SuperCrysCoord iY)
Definition: MEEEGeom.cc:112
static std::vector< ME::DCCid > memFromDcc(ME::DCCid idcc)
Definition: ME.cc:561
static std::vector< int > apdRefChannels(int ilmmod)
Definition: MEEBGeom.cc:526
static int crystal(CrysCoord ix, CrysCoord iy)
Definition: MEEEGeom.cc:372
int wavelength
Definition: ME.h:85
static const TString PNPrimVar[iSizePN]
Definition: ME.h:135
static std::pair< ME::DCCid, ME::DCCid > memFromLmr(ME::LMRid ilmr)
Definition: ME.cc:538
Definition: ME.h:16
static int crystal_channel(EBLocalCoord ix, EBLocalCoord iy)
Definition: MEEBGeom.cc:319
static const TString region[iSizeE]
Definition: ME.h:51
static TString path()
Definition: ME.cc:81
Definition: ME.h:14
std::pair< EBGlobalCoord, EBGlobalCoord > EtaPhiCoord
Definition: MEEBGeom.h:24
Definition: ME.h:14
const Time_t kLowMask(0xFFFFFFFF)
unsigned long Time
Definition: ME.h:68
static TString lmdataPath(int lmr)
Definition: ME.cc:65
static std::pair< ME::DCCid, ME::PNid > pn(ME::LMRid ilmr, ME::LMMid ilmmod, ME::PN ipn)
Definition: ME.cc:597
static int lmr(EBGlobalCoord ieta, EBGlobalCoord iphi)
Definition: MEEBGeom.cc:110
Definition: ME.h:63
static bool isBarrel(int ilmr)
Definition: ME.cc:527
assert(be >=bs)
static TString runListName(int lmr, int type, int color)
Definition: ME.cc:119
MEChannel * getDaughter(int ix, int iy, int ig)
Definition: MEChannel.cc:33
static const TString TPAPDPrimVar[iSizeTPAPD]
Definition: ME.h:143
static const TimeStamp kLowMask
Definition: ME.h:70
static Time time_low(TimeStamp t)
Definition: ME.cc:224
static std::pair< int, int > pn(int ilmmod)
Definition: MEEBGeom.cc:447
static TString rootFileName(ME::Header header, ME::Settings settings)
Definition: ME.cc:83
static int lm_channel(EBTTLocalCoord iX, EBTTLocalCoord iY)
Definition: MEEBGeom.cc:201
static const TString MTQPrimVar[iSizeMTQ]
Definition: ME.h:139
Definition: ME.h:64
static const TString TPPNPrimVar[iSizeTPPN]
Definition: ME.h:147
static std::pair< int, int > pn(int dee, int ilmod)
Definition: MEEEGeom.cc:574
MEChannel * getDescendant(int ig, int ii)
Definition: MEChannel.cc:103
Definition: ME.h:64
static int electronic_channel(EBLocalCoord ix, EBLocalCoord iy)
Definition: MEEBGeom.cc:326
static const TString granularity[iSizeG]
Definition: ME.h:54
static EtaPhiCoord globalCoord(int ism, EBLocalCoord ix, EBLocalCoord iy)
Definition: MEEBGeom.cc:149
static const TString APDPrimVar[iSizeAPD]
Definition: ME.h:131
Definition: ME.h:63
static std::pair< int, int > dccAndSide(int ilmr)
Definition: ME.cc:295
static int sm(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
Definition: MEEEGeom.cc:101
static TString smNameFromDcc(int idcc)
Definition: ME.cc:402
Definition: ME.h:64
Definition: ME.h:64
static std::vector< int > lmmodFromLmr(int ilmr)
Definition: MEEEGeom.cc:1163
Definition: ME.h:14
ii
Definition: cuy.py:589
static Time time(float dt, Time t0, int tunit=iHour)
Definition: ME.cc:200
unsigned long long TimeStamp
Definition: ME.h:69
static std::pair< int, int > memFromLmr(int ilmr)
Definition: MEEBGeom.cc:473
static int ecalRegion(int ilmr)
Definition: ME.cc:230
static int tt_channel(EBTTLocalCoord iX, EBTTLocalCoord iY)
Definition: MEEBGeom.cc:313
std::string smName(unsigned)
static MEChannel * regTree(int ireg)
Definition: ME.cc:409
static const TString color[iSizeC]
Definition: ME.h:158
static const bool useElectronicNumbering
Definition: ME.h:36
static const TString type[iSizeT]
Definition: ME.h:157
Definition: ME.h:72
int type
Definition: ME.h:84
static std::vector< ME::LMMid > lmmodFromLmr(ME::LMRid ilmr)
Definition: ME.cc:553
static int lmr(int idcc, int iside)
Definition: ME.cc:243
static std::vector< int > apdRefChannels(int ilmmod)
Definition: MEEEGeom.cc:1364
static TString primPath(int lmr)
Definition: ME.cc:73
Definition: ME.h:64
static Time time_high(TimeStamp t)
Definition: ME.cc:226
static std::vector< Time > timeDiff(Time t1, Time t2, short int &sign)
Definition: ME.cc:146
static int dee(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
Definition: MEEEGeom.cc:292
PN
Definition: ME.h:42
static std::vector< MEChannel * > _trees
Definition: ME.h:169
static TString smName(int ilmr)
Definition: ME.cc:391
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:49
Definition: ME.h:14
static MEChannel * lmrTree(int ilmr)
Definition: ME.cc:407
static int sc(SuperCrysCoord iX, SuperCrysCoord iY)
Definition: MEEEGeom.cc:215
static std::vector< int > apdRefChannels(ME::LMMid ilmmod, ME::LMRid ilmr)
Definition: ME.cc:545
Definition: ME.h:14
static std::vector< ME::LMMid > lmmodFromDcc(ME::DCCid idcc)
Definition: ME.cc:574
static int lmr(SuperCrysCoord iX, SuperCrysCoord iY, int iz)
Definition: MEEEGeom.cc:254
static std::vector< int > lmmodFromLmr(int ilmr)
Definition: MEEBGeom.cc:479