10 #include "TObjArray.h" 33 return getBinningSM_(_btype, _isMap, _iME, _axis, electronicsMap);
35 return getBinningSM_(_btype, _isMap, _iME + 9, _axis, electronicsMap);
38 return getBinningSM_(_btype, _isMap, _iME, _axis, electronicsMap);
72 return towerId(_id, electronicsMap);
74 unsigned tccid(
tccId(_id, electronicsMap));
75 if (tccid <= 36 || tccid >= 73) {
76 unsigned bin(
ttId(_id, electronicsMap));
77 bool outer((tccid >= 19 && tccid <= 36) || (tccid >= 73 && tccid <= 90));
91 return ttId(_id, electronicsMap);
96 return dccId(_id, electronicsMap);
97 else if (_btype ==
kTCC)
98 return tccId(_id, electronicsMap);
103 return dccId(_id, electronicsMap) - 9;
104 else if (_btype ==
kTCC)
105 return tccId(_id, electronicsMap) - 36;
110 return dccId(_id, electronicsMap);
111 else if (_btype ==
kTCC)
112 return tccId(_id, electronicsMap);
117 return dccId(_id, electronicsMap) - 45;
118 else if (_btype ==
kTCC)
119 return tccId(_id, electronicsMap) - 72;
123 if (_btype ==
kDCC) {
124 int bin(
dccId(_id, electronicsMap));
128 }
else if (_btype ==
kTCC) {
129 int bin(
tccId(_id, electronicsMap));
160 unsigned tccid(
tccId(_id, electronicsMap));
161 if (tccid <= 36 || tccid >= 73) {
162 unsigned bin(
ttId(_id, electronicsMap));
163 bool outer((tccid >= 19 && tccid <= 36) || (tccid >= 73 && tccid <= 90));
177 return ttId(_id, electronicsMap);
183 else if (_btype ==
kTCC)
184 return tccId(_id, electronicsMap);
189 return dccId(_id) - 9;
190 else if (_btype ==
kTCC)
191 return tccId(_id, electronicsMap) - 36;
197 else if (_btype ==
kTCC)
198 return tccId(_id, electronicsMap);
203 return dccId(_id) - 45;
204 else if (_btype ==
kTCC)
205 return tccId(_id, electronicsMap) - 72;
209 if (_btype ==
kDCC) {
214 }
else if (_btype ==
kTCC) {
215 int bin(
tccId(_id, electronicsMap));
231 else if (_otype ==
kEcal && _btype ==
kTCC)
233 if (_otype ==
kEB && _btype ==
kDCC)
234 return _dcctccid - 9;
235 else if (_otype ==
kEB && _btype ==
kTCC)
236 return _dcctccid - 36;
237 else if (_otype ==
kEEm && _btype ==
kDCC)
239 else if (_otype ==
kEEm && _btype ==
kTCC)
241 else if (_otype ==
kEEp && _btype ==
kDCC)
242 return _dcctccid - 45;
243 else if (_otype ==
kEEp && _btype ==
kTCC)
244 return _dcctccid - 72;
245 else if (_otype ==
kEE && _btype ==
kDCC)
246 return _dcctccid <= 9 ? _dcctccid : _dcctccid - 36;
247 else if (_otype ==
kEE && _btype ==
kTCC)
248 return _dcctccid <= 36 ? _dcctccid : _dcctccid - 36;
305 unsigned iDCC(_dccid - 1);
307 if (iDCC <= kEEmHigh || iDCC >=
kEEpLow)
308 xbin = (iDCC + 6) %
nbinsX + 1;
311 int ybin(6 - iDCC /
nbinsX);
313 return (
nbinsX + 2) * ybin + xbin;
354 unsigned iDCC(
dccId(_id, electronicsMap) - 1);
383 int iSM(_dcctccid - 1);
389 : iSM >=
kEEpTCCLow ? (iSM + 1 - 72) % 18 / 2 + 45
417 if (_btype ==
kDCC) {
418 if (iSM <= kEEmHigh || iSM >=
kEEpLow)
422 }
else if (_btype ==
kTCC) {
435 if (_btype ==
kDCC) {
442 }
else if (_btype ==
kTCC) {
459 if (_btype ==
kDCC) {
472 if (_btype ==
kDCC) {
473 if (iSM <= kEEmHigh || iSM >=
kEEpLow)
477 }
else if (_btype ==
kTCC)
564 if (_otype ==
kEEm || _otype ==
kEEp) {
569 }
else if (_otype ==
kEE) {
573 ix = (ix - 100) % 101;
581 }
else if (_otype ==
kSM || _otype ==
kEESM) {
595 int ix(_bin % (nX + 2) +
xlow_(iSM));
596 int iy(_bin / (nX + 2) +
ylow_(iSM));
605 int ix(_bin % (nX + 2) +
xlow_(iSM) / 5);
606 int iy(_bin / (nX + 2) +
ylow_(iSM) / 5);
625 std::stringstream
ss;
632 if (
eid.towerId() >= 69)
633 ss <<
smName(
eid.dccId()) <<
" DCC " <<
eid.dccId() <<
" CCU " <<
eid.towerId() <<
" PN " <<
eid.xtalId();
635 ss <<
smName(
eid.dccId()) <<
" DCC " <<
eid.dccId() <<
" CCU " <<
eid.towerId() <<
" strip " 636 <<
eid.stripId() <<
" xtal " <<
eid.xtalId();
640 ss <<
" (EB ieta " << std::showpos << ebid.ieta() << std::noshowpos <<
" iphi " << ebid.iphi() <<
")";
643 ss <<
" (EE ix " << eeid.ix() <<
" iy " << eeid.iy() <<
")";
646 ss <<
" (TCC " << teid.tccId() <<
" TT " << teid.ttId() <<
" pstrip " << teid.pseudoStripId() <<
" chan " 647 << teid.channelId() <<
")";
665 ss <<
" (EBTT ieta " << std::showpos << ttid.ieta() << std::noshowpos <<
" iphi " << ttid.iphi() <<
")";
668 ss <<
" (EESC ix " << scid.ix() <<
" iy " << scid.iy() <<
")";
674 int tccid(_rawId -
nDCC);
692 "(EB|EE)([+-][0-9][0-9])(?: TCC ([0-9]+)| DCC ([0-9]+) (CCU|TCC) " 693 "([0-9]+)(?: (TT|strip|PN) ([0-9]+)(?: xtal ([0-9]+)|)|)|)");
699 if (
matches->GetEntries() == 0)
701 else if (
matches->GetEntries() == 3) {
702 TString subdet(static_cast<TObjString *>(
matches->At(1))->GetString());
703 if (subdet ==
"EB") {
704 int dccid(static_cast<TObjString *>(
matches->At(2))->GetString().Atoi());
713 int dccid(static_cast<TObjString *>(
matches->At(2))->GetString().Atoi());
720 }
else if (
matches->GetEntries() == 4)
721 rawId = static_cast<TObjString *>(
matches->At(3))->GetString().Atoi() +
nDCC;
723 TString subtype(static_cast<TObjString *>(
matches->At(5))->GetString());
724 if (subtype ==
"TCC") {
725 int tccid(static_cast<TObjString *>(
matches->At(6))->GetString().Atoi());
726 int ttid(static_cast<TObjString *>(
matches->At(8))->GetString().Atoi());
729 int dccid(static_cast<TObjString *>(
matches->At(4))->GetString().Atoi());
730 int towerid(static_cast<TObjString *>(
matches->At(6))->GetString().Atoi());
731 if (
matches->GetEntries() == 7)
734 TString chType(static_cast<TObjString *>(
matches->At(7))->GetString());
735 int stripOrPNid(static_cast<TObjString *>(
matches->At(8))->GetString().Atoi());
738 else if (chType ==
"strip") {
739 int xtalid(static_cast<TObjString *>(
matches->At(9))->GetString().Atoi());
755 int ieta(_bin / 362 - 86);
760 int ieta(_bin / 74 - 17);
768 }
else if (_otype ==
kEEm || _otype ==
kEEp) {
769 int z(_otype ==
kEEm ? -1 : 1);
774 }
else if (_otype ==
kEE) {
777 int z(ix > 100 ? 1 : -1);
779 ix = (ix - 100) % 101;
783 int z(ix > 20 ? 1 : -1);
788 }
else if (_otype ==
kSM || _otype ==
kEBSM || _otype ==
kEESM) {
799 int iphi(((iSM - 9) % 18) * 20 + (z < 0 ? _bin / 87 : 21 - _bin / 87));
800 int ieta((_bin % 87) * z);
803 int iphi((((iSM - 9) % 18) * 4 + (z < 0 ? _bin / 19 : 5 - _bin / 19) + 69) % 72 + 1);
832 if (_axisParams.
existsAs<std::vector<double>>(
"edges",
false)) {
834 axis.
nbins = vEdges.size() - 1;
835 axis.
edges.assign(vEdges.begin(), vEdges.end());
839 bool highSet(_axisParams.
existsAs<
double>(
"high",
false));
840 bool perBinSet(_axisParams.
existsAs<
double>(
"unitsPerBin",
false));
843 edm::LogWarning(
"EcalDQM") <<
"Maximum and bin width both set in an axis; using the former";
845 }
else if (perBinSet)
851 if (_axisParams.
existsAs<std::vector<std::string>>(
"labels",
false)) {
875 if (_otypeName ==
"EB")
877 else if (_otypeName ==
"EE")
879 else if (_otypeName ==
"EEm")
881 else if (_otypeName ==
"EEp")
883 else if (_otypeName ==
"SM")
885 else if (_otypeName ==
"EBSM")
887 else if (_otypeName ==
"EESM")
889 else if (_otypeName ==
"SMMEM")
891 else if (_otypeName ==
"EBSMMEM")
893 else if (_otypeName ==
"EESMMEM")
895 else if (_otypeName ==
"Ecal")
897 else if (_otypeName ==
"MEM")
899 else if (_otypeName ==
"EBMEM")
901 else if (_otypeName ==
"EEMEM")
903 else if (_otypeName ==
"Ecal2P")
905 else if (_otypeName ==
"Ecal3P")
907 else if (_otypeName ==
"EE2P")
909 else if (_otypeName ==
"MEM2P")
911 else if (_otypeName ==
"Channel")
913 else if (_otypeName ==
"None")
916 throw cms::Exception(
"InvalidConfiguration") <<
"No object type " << _otypeName <<
" defined";
920 if (_btypeName ==
"Crystal")
922 else if (_btypeName ==
"TriggerTower")
924 else if (_btypeName ==
"SuperCrystal")
926 else if (_btypeName ==
"PseudoStrip")
928 else if (_btypeName ==
"TCC")
930 else if (_btypeName ==
"DCC")
932 else if (_btypeName ==
"ProjEta")
934 else if (_btypeName ==
"ProjPhi")
936 else if (_btypeName ==
"RCT")
938 else if (_btypeName ==
"User")
940 else if (_btypeName ==
"Report")
942 else if (_btypeName ==
"Trend")
945 throw cms::Exception(
"InvalidConfiguration") <<
"No binning type " << _btypeName <<
" defined";
949 if (_kindName ==
"REAL")
951 else if (_kindName ==
"TH1F")
953 else if (_kindName ==
"TProfile")
955 else if (_kindName ==
"TH2F")
957 else if (_kindName ==
"TProfile2D")
static bool validDetId(int ix, int iy, int iz)
unsigned memDCCIndex(unsigned)
int findBinRCT_(ObjectType, DetId const &)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
bool isValidIdBin(EcalElectronicsMapping const *, ObjectType, BinningType, unsigned, int)
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
int findBinPseudoStrip_(EcalElectronicsMapping const *, ObjectType, DetId const &)
unsigned getNObjects(ObjectType)
int DCCid(const EBDetId &id) const
returns the DCC of an EBDetId
int dccId() const
get the DCC (Ecal Local DCC value not global one) id
int findBinCrystal_(EcalElectronicsMapping const *, ObjectType, DetId const &, int=-1)
std::vector< float > edges
EcalTriggerElectronicsId getTriggerElectronicsId(const DetId &id) const
Get the trigger electronics id for this det id.
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
ObjectType getObject(ObjectType, unsigned)
AxisSpecs getBinningSM_(BinningType, bool, unsigned, int, EcalElectronicsMapping const *)
unsigned ttId(DetId const &, EcalElectronicsMapping const *)
ObjectType translateObjectType(std::string const &)
T getUntrackedParameter(std::string const &, T const &) const
bool isEndcapTTId(DetId const &)
dqm::legacy::MonitorElement::Kind translateKind(std::string const &)
unsigned towerId(DetId const &, EcalElectronicsMapping const *)
AxisSpecs getBinningSMMEM_(BinningType, bool, unsigned, int)
unsigned dccId(DetId const &, EcalElectronicsMapping const *)
ParameterDescriptionNode * addOptionalNode(ParameterDescriptionNode const &node, bool writeToCfi)
AxisSpecs getBinningEB_(BinningType, bool, int)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
int findBin2D(EcalElectronicsMapping const *, ObjectType, BinningType, DetId const &)
int tccId() const
get the DCC (Ecal Local DCC value not global one) id
int findBinTriggerTower_(EcalElectronicsMapping const *, ObjectType, DetId const &)
uint32_t idFromName(std::string const &)
EcalTrigTowerDetId getTrigTowerDetId(int TCCid, int iTT) const
Builds a EcalTrigTowerDetID from the TCCid & TriggerTower index in TCC.
int findBinSuperCrystal_(EcalElectronicsMapping const *, ObjectType, DetId const &, int=-1)
unsigned findPlotIndex(EcalElectronicsMapping const *, ObjectType, DetId const &)
std::string smName(unsigned)
constexpr uint32_t rawId() const
get the raw id
static bool validDetId(int crystal_ix, int crystal_iy, int iz)
unsigned tccId(DetId const &, EcalElectronicsMapping const *)
AxisSpecs getBinningEE_(BinningType, bool, int, int)
int iPnId() const
get the PnId
AxisSpecs getBinning(EcalElectronicsMapping const *, ObjectType, BinningType, bool, int, unsigned)
EcalElectronicsId getElectronicsId(const DetId &id) const
Get the electronics id for this det id.
void fillAxisDescriptions(edm::ParameterSetDescription &)
int ttId() const
get the tower id
std::string channelName(EcalElectronicsMapping const *, uint32_t, BinningType _btype=kDCC)
ParameterDescriptionBase * addOptionalUntracked(U const &iLabel, T const &value)
BinningType translateBinningType(std::string const &)
AxisSpecs formAxis(edm::ParameterSet const &)
Log< level::Warning, false > LogWarning
AxisSpecs getBinningMEM_(BinningType, bool, int, int)
int findBin1D(EcalElectronicsMapping const *, ObjectType, BinningType, DetId const &)
AxisSpecs getBinningEcal_(BinningType, bool, int)
Ecal trigger electronics identification [32:20] Unused (so far) [19:13] TCC id [12:6] TT id [5:3] pse...
std::vector< std::string > labels
DetId getDetId(const EcalElectronicsId &id) const
Get the detid given an electronicsId.
uint32_t idFromBin(ObjectType, BinningType, unsigned, int)