#include <EcalDQMBinningService.h>
Classes | |
struct | AxisSpecs |
Public Types | |
enum | BinningType { kCrystal, kTriggerTower, kSuperCrystal, kTCC, kDCC, kProjEta, kProjPhi, kUser, kReport, kTrend, nBinType } |
enum | Constants { nPlotType = kEcal + 1, nPresetBinnings = kProjPhi + 1, nDCC = 54, nDCCMEM = 44, nTCC = 108, kEEmTCCLow = 0, kEEmTCCHigh = 35, kEEpTCCLow = 72, kEEpTCCHigh = 107, kEBTCCLow = 36, kEBTCCHigh = 71, nEBSMEta = 85, nEBSMPhi = 20, nEBSMBins = nEBSMEta * nEBSMPhi, nEESMX = 40, nEESMY = 40, nEESMBins = nEESMX * nEESMY, nEESMXExt = 45, nEESMBinsExt = nEESMXExt * nEESMY, nEBEtaBins = 34, nEEEtaBins = 20, nPhiBins = 36 } |
enum | ObjectType { kEB, kEBMEM, kEE, kEEm, kEEp, kEEMEM, kSM, kSMMEM, kEcal, kEcal2P, kEcal3P, kEcalMEM2P, kChannel, nObjType } |
Public Member Functions | |
std::string | channelName (uint32_t, BinningType _btype=kDCC) const |
EcalDQMBinningService (const edm::ParameterSet &, edm::ActivityRegistry &) | |
std::pair< unsigned, std::vector< int > > | findBins (ObjectType, BinningType, unsigned) const |
std::pair< unsigned, std::vector< int > > | findBins (ObjectType, BinningType, const DetId &) const |
std::pair< unsigned, std::vector< int > > | findBins (ObjectType, BinningType, const EcalElectronicsId &) const |
std::pair< unsigned, std::vector< int > > | findBinsNoMap (ObjectType, BinningType, const DetId &) const |
std::pair< unsigned, std::vector< int > > | findBinsNoMap (ObjectType, BinningType, const EcalElectronicsId &) const |
unsigned | findOffset (ObjectType, const DetId &) const |
unsigned | findOffset (ObjectType, const EcalElectronicsId &) const |
unsigned | findOffset (ObjectType, BinningType, unsigned) const |
const std::vector< int > * | getBinMap (ObjectType &, BinningType &) const |
std::vector< AxisSpecs > | getBinning (ObjectType, BinningType, bool _isMap=true, unsigned _objOffset=0) const |
uint32_t | idFromName (std::string const &) const |
ObjectType | objectFromOffset (ObjectType, unsigned) const |
void | postBeginRun (const edm::Run &, const edm::EventSetup &) |
int | smOffsetBins (ObjectType, BinningType, unsigned) const |
int | xlow (int) const |
int | ylow (int) const |
~EcalDQMBinningService () | |
Private Member Functions | |
void | findBinsCrystal_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
void | findBinsDCC_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
void | findBinsProjEta_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
void | findBinsProjPhi_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
void | findBinsSuperCrystal_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
void | findBinsTCC_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
void | findBinsTriggerTower_ (const DetId &, ObjectType, const std::vector< int > &, std::vector< int > &) const |
const std::vector< int > * | getBinMapEB_ (BinningType) const |
const std::vector< int > * | getBinMapEBMEM_ (BinningType) const |
const std::vector< int > * | getBinMapEcal_ (BinningType) const |
const std::vector< int > * | getBinMapEE_ (BinningType, int) const |
const std::vector< int > * | getBinMapEEMEM_ (BinningType) const |
const std::vector< int > * | getBinMapSM_ (BinningType) const |
const std::vector< int > * | getBinMapSMMEM_ (BinningType) const |
std::vector< AxisSpecs > | getBinningEB_ (BinningType, bool) const |
std::vector< AxisSpecs > | getBinningEBMEM_ (BinningType, bool) const |
std::vector< AxisSpecs > | getBinningEcal_ (BinningType, bool) const |
std::vector< AxisSpecs > | getBinningEE_ (BinningType, bool, int) const |
std::vector< AxisSpecs > | getBinningEEMEM_ (BinningType, bool) const |
std::vector< AxisSpecs > | getBinningSM_ (BinningType, bool, unsigned) const |
std::vector< AxisSpecs > | getBinningSMMEM_ (BinningType, bool, unsigned) const |
Private Attributes | |
std::vector< int > | binMaps_ [nPlotType][nPresetBinnings] |
std::pair< unsigned, std::vector< int > > | cache_ |
BinningType | cacheBtype_ |
uint32_t | cacheId_ |
ObjectType | cacheOtype_ |
const double | etaBound_ |
const CaloGeometry * | geometry_ |
bool | initialized_ |
int | verbosity_ |
Definition at line 26 of file EcalDQMBinningService.h.
kCrystal | |
kTriggerTower | |
kSuperCrystal | |
kTCC | |
kDCC | |
kProjEta | |
kProjPhi | |
kUser | |
kReport | |
kTrend | |
nBinType |
Definition at line 45 of file EcalDQMBinningService.h.
Definition at line 59 of file EcalDQMBinningService.h.
{ nPlotType = kEcal + 1, nPresetBinnings = kProjPhi + 1, nDCC = 54, nDCCMEM = 44, nTCC = 108, kEEmTCCLow = 0, kEEmTCCHigh = 35, kEEpTCCLow = 72, kEEpTCCHigh = 107, kEBTCCLow = 36, kEBTCCHigh = 71, nEBSMEta = 85, nEBSMPhi = 20, nEBSMBins = nEBSMEta * nEBSMPhi, nEESMX = 40, nEESMY = 40, nEESMBins = nEESMX * nEESMY, nEESMXExt = 45, // for EE+-02&08 nEESMBinsExt = nEESMXExt * nEESMY, nEBEtaBins = 34, nEEEtaBins = 20, nPhiBins = 36 };
EcalDQMBinningService::EcalDQMBinningService | ( | const edm::ParameterSet & | _ps, |
edm::ActivityRegistry & | _registry | ||
) |
Definition at line 27 of file EcalDQMBinningService.cc.
References postBeginRun(), and edm::ActivityRegistry::watchPostBeginRun().
: cacheId_(0), cacheOtype_(nObjType), cacheBtype_(nBinType), etaBound_(1.479), geometry_(0), initialized_(false), verbosity_(_ps.getUntrackedParameter<int>("verbosity")) { _registry.watchPostBeginRun(this, &EcalDQMBinningService::postBeginRun); }
EcalDQMBinningService::~EcalDQMBinningService | ( | ) |
Definition at line 39 of file EcalDQMBinningService.cc.
{ }
std::string EcalDQMBinningService::channelName | ( | uint32_t | _rawId, |
BinningType | _btype = kDCC |
||
) | const |
Definition at line 574 of file EcalDQMBinningService.cc.
References EcalTriggerElectronicsId::channelId(), EcalElectronicsId::dccId(), ecaldqm::getElectronicsMap(), EBDetId::ieta(), EcalTrigTowerDetId::ieta(), EcalTrigTowerDetId::iphi(), EBDetId::iphi(), EEDetId::ix(), EcalScDetId::ix(), EEDetId::iy(), EcalScDetId::iy(), kCrystal, kDCC, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, kSuperCrystal, kTCC, kTriggerTower, nDCC, EcalTriggerElectronicsId::pseudoStripId(), ecaldqm::smName(), EcalElectronicsId::stripId(), EcalTriggerElectronicsId::tccId(), EcalElectronicsId::towerId(), EcalTriggerElectronicsId::ttId(), and EcalElectronicsId::xtalId().
Referenced by ecaldqm::MESetEcal::book(), ecaldqm::MESetChannel::fill(), ecaldqm::MESetEcal::generateNames(), and ecaldqm::MESetChannel::setBinContent().
{ std::stringstream ss; switch(_btype){ case kCrystal: { // EB-03 DCC 12 CCU 12 strip 3 xtal 1 (EB ieta -13 iphi 60) (TCC 39 TT 12 pstrip 3 chan 1) EcalElectronicsId eid(_rawId); ss << smName(eid.dccId()) << " DCC " << eid.dccId() << " CCU " << eid.towerId() << " strip " << eid.stripId() << " xtal " << eid.xtalId(); if(eid.towerId() >= 69) break; if(eid.dccId() >= kEBmLow + 1 && eid.dccId() <= kEBpHigh + 1){ EBDetId ebid(getElectronicsMap()->getDetId(eid)); ss << " (EB ieta " << std::showpos << ebid.ieta() << std::noshowpos << " iphi " << ebid.iphi() << ")"; } else{ EEDetId eeid(getElectronicsMap()->getDetId(eid)); ss << " (EE ix " << eeid.ix() << " iy " << eeid.iy() << ")"; } EcalTriggerElectronicsId teid(getElectronicsMap()->getTriggerElectronicsId(eid)); ss << " (TCC " << teid.tccId() << " TT " << teid.ttId() << " pstrip " << teid.pseudoStripId() << " chan " << teid.channelId() << ")"; break; } case kTriggerTower: { // EB-03 DCC 12 TCC 18 TT 3 EcalTriggerElectronicsId teid(_rawId); EcalElectronicsId eid(getElectronicsMap()->getElectronicsId(teid)); ss << smName(eid.dccId()) << " DCC " << eid.dccId() << " TCC " << teid.tccId() << " TT " << teid.ttId(); break; } case kSuperCrystal: { // EB-03 DCC 12 CCU 18 (EBTT ieta -13 iphi 60) EcalElectronicsId eid(_rawId); ss << smName(eid.dccId()) << " DCC " << eid.dccId() << " CCU " << eid.towerId(); if(eid.dccId() >= kEBmLow + 1 && eid.dccId() <= kEBpHigh + 1){ EcalTrigTowerDetId ttid(EBDetId(getElectronicsMap()->getDetId(eid)).tower()); ss << " (EBTT ieta " << std::showpos << ttid.ieta() << std::noshowpos << " iphi " << ttid.iphi() << ")"; } else{ EcalScDetId scid(EEDetId(getElectronicsMap()->getDetId(eid)).sc()); ss << " (EESC ix " << scid.ix() << " iy " << scid.iy() << ")"; } break; } case kTCC: { // EB-03 TCC 12 int tccid(_rawId - nDCC); int dccid(getElectronicsMap()->DCCid(getElectronicsMap()->getTrigTowerDetId(tccid, 1))); ss << smName(dccid) << " TCC " << (_rawId - nDCC); break; } case kDCC: ss << smName(_rawId); break; default: break; } return ss.str(); }
std::pair< unsigned, std::vector< int > > EcalDQMBinningService::findBins | ( | ObjectType | _otype, |
BinningType | _btype, | ||
const DetId & | _id | ||
) | const |
Definition at line 199 of file EcalDQMBinningService.cc.
References cache_, cacheBtype_, cacheId_, cacheOtype_, findBinsCrystal_(), findBinsDCC_(), findBinsProjEta_(), findBinsProjPhi_(), findBinsSuperCrystal_(), findBinsTCC_(), findBinsTriggerTower_(), findOffset(), getBinMap(), kCrystal, kDCC, kProjEta, kProjPhi, kSM, kSMMEM, kSuperCrystal, kTCC, kTriggerTower, nObjType, nPresetBinnings, objectFromOffset(), run_regression::ret, and smOffsetBins().
Referenced by ecaldqm::MESetDet1D::find_(), ecaldqm::MESetEcal::find_(), findBins(), and findBinsNoMap().
{ using namespace std; if(_otype == cacheOtype_ && _btype == cacheBtype_ && _id == cacheId_) return cache_; pair<unsigned, std::vector<int> > ret(-1, std::vector<int>(0)); if(_otype >= nObjType || _btype >= unsigned(nPresetBinnings)) return ret; ret.first = findOffset(_otype, _id); if(ret.first == unsigned(-1)) return ret; // bring up the appropriate dictionary ObjectType okey(objectFromOffset(_otype, ret.first)); BinningType bkey(_btype); if(okey == nObjType) return ret; const std::vector<int>* binMap(getBinMap(okey, bkey)); if(binMap == 0) return ret; switch(bkey){ case kCrystal: findBinsCrystal_(_id, okey, *binMap, ret.second); break; case kTriggerTower: findBinsTriggerTower_(_id, okey, *binMap, ret.second); break; case kSuperCrystal: findBinsSuperCrystal_(_id, okey, *binMap, ret.second); break; case kDCC: findBinsDCC_(_id, okey, *binMap, ret.second); break; case kTCC: findBinsTCC_(_id, okey, *binMap, ret.second); break; case kProjEta: findBinsProjEta_(_id, okey, *binMap, ret.second); break; case kProjPhi: findBinsProjPhi_(_id, okey, *binMap, ret.second); default : break; } // binMap value differs from actual bin numbers for SM plots if(_otype == kSM || _otype == kSMMEM){ for(vector<int>::iterator binItr(ret.second.begin()); binItr != ret.second.end(); ++binItr) *binItr -= smOffsetBins(_otype, _btype, ret.first); } cacheId_ = _id; cacheOtype_ = _otype; cacheBtype_ = _btype; cache_ = ret; return ret; }
std::pair< unsigned, std::vector< int > > EcalDQMBinningService::findBins | ( | ObjectType | _otype, |
BinningType | _btype, | ||
const EcalElectronicsId & | _id | ||
) | const |
Definition at line 261 of file EcalDQMBinningService.cc.
References findBins(), and ecaldqm::getElectronicsMap().
{ return findBins(_otype, _btype, getElectronicsMap()->getDetId(_id)); }
std::pair< unsigned, std::vector< int > > EcalDQMBinningService::findBins | ( | ObjectType | _otype, |
BinningType | _btype, | ||
unsigned | _dcctccid | ||
) | const |
Definition at line 267 of file EcalDQMBinningService.cc.
References cache_, cacheBtype_, cacheId_, cacheOtype_, findOffset(), getBinMap(), getHLTprescales::index, kDCC, kEB, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, kEBTCCHigh, kEBTCCLow, kEE, ecaldqm::kEEmHigh, kEEmTCCHigh, kEEp, ecaldqm::kEEpLow, kEEpTCCLow, kTCC, objectFromOffset(), and run_regression::ret.
{ using namespace std; if(_otype == cacheOtype_ && _btype == cacheBtype_ && _dcctccid == cacheId_) return cache_; pair<unsigned, std::vector<int> > ret(-1, std::vector<int>(0)); if(_btype != kTCC && _btype != kDCC) return ret; ret.first = findOffset(_otype, _btype, _dcctccid); if(ret.first == unsigned(-1)) return ret; // bring up the appropriate dictionary ObjectType okey(objectFromOffset(_otype, ret.first)); BinningType bkey(_btype); const std::vector<int>* binMap(getBinMap(okey, bkey)); if(binMap == 0) return ret; unsigned index(_dcctccid - 1); if(bkey == kDCC){ if(okey == kEB) index -= kEBmLow; else if(okey == kEE && index >= kEEpLow) index -= (kEBpHigh - kEEmHigh); else if(okey == kEEp) index -= kEEpLow; } else{ if(okey == kEB) index -= kEBTCCLow; else if(okey == kEE && index >= kEEpLow) index -= (kEBTCCHigh - kEEmTCCHigh); else if(okey == kEEp) index -= kEEpTCCLow; } ret.second.push_back(binMap->at(index)); cacheId_ = _dcctccid; cacheOtype_ = _otype; cacheBtype_ = _btype; cache_ = ret; return ret; }
void EcalDQMBinningService::findBinsCrystal_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 976 of file EcalDQMBinningService2.cc.
References EBDetId::denseIndex(), EEDetId::denseIndex(), EcalBarrel, EcalEndcap, EcalLaserPnDiode, EcalTriggerTower, ecaldqm::getElectronicsMap(), ecaldqm::getTrigTowerMap(), EcalPnDiodeDetId::iDCCId(), getHLTprescales::index, EcalPnDiodeDetId::iPnId(), ecaldqm::isEcalScDetId(), ecaldqm::kEBmLow, EEDetId::kEEhalf, ecaldqm::kEEmHigh, ecaldqm::kEEp, ecaldqm::kEEpLow, EBDetId::kSizeForDenseIndexing, ecaldqm::kSM, DetId::subdetId(), and EEDetId::zside().
Referenced by findBins().
{ using namespace std; bool fullRange(_okey == kSM || _okey == kEcal); switch(_id.subdetId()){ case EcalBarrel: { unsigned index(EBDetId(_id).denseIndex()); if(fullRange) index += EEDetId::kEEhalf; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalEndcap: if(isEcalScDetId(_id)){ pair<int, int> dccSc(getElectronicsMap()->getDCCandSC(EcalScDetId(_id))); vector<DetId> detIds(getElectronicsMap()->dccTowerConstituents(dccSc.first, dccSc.second)); for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr) { EEDetId eeid(*idItr); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) { if(fullRange) index += EBDetId::kSizeForDenseIndexing; else if(_okey == kEEp) index -= EEDetId::kEEhalf; } if(index < _binMap.size()) _bins.push_back(_binMap[index]); } } else{ EEDetId eeid(_id); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) { if(fullRange) index += EBDetId::kSizeForDenseIndexing; else if(_okey == kEEp) index -= EEDetId::kEEhalf; } if(index < _binMap.size()) _bins.push_back(_binMap[index]); } break; case EcalTriggerTower: { EcalTrigTowerDetId ttid(_id); vector<DetId> detIds(getTrigTowerMap()->constituentsOf(ttid)); for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr) { if(idItr->subdetId() == EcalBarrel) { unsigned index(EBDetId(*idItr).denseIndex()); if(fullRange) index += EEDetId::kEEhalf; if(index < _binMap.size()) _bins.push_back(_binMap[index]); } else { EEDetId eeid(*idItr); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) { if(fullRange) index += EBDetId::kSizeForDenseIndexing; else if(_okey == kEEp) index -= EEDetId::kEEhalf; } if (index < _binMap.size()) _bins.push_back(_binMap[index]); } } break; } case EcalLaserPnDiode: { EcalPnDiodeDetId pnid(_id); int iDCC(pnid.iDCCId() - 1); unsigned index(iDCC * 10 + pnid.iPnId()); if(_okey == kEBMEM) index -= kEEmHigh * 10; else if(_okey == kEEMEM && iDCC >= kEEpLow) index -= (kEEpLow - kEBmLow) * 10; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } default: break; } }
void EcalDQMBinningService::findBinsDCC_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 1146 of file EcalDQMBinningService2.cc.
References ecaldqm::dccId(), getHLTprescales::index, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, ecaldqm::kEEmHigh, ecaldqm::kEEp, and ecaldqm::kEEpLow.
Referenced by findBins().
std::pair< unsigned, std::vector< int > > EcalDQMBinningService::findBinsNoMap | ( | ObjectType | _otype, |
BinningType | _btype, | ||
const EcalElectronicsId & | _id | ||
) | const |
Definition at line 352 of file EcalDQMBinningService.cc.
References findBinsNoMap(), and ecaldqm::getElectronicsMap().
{ return findBinsNoMap(_otype, _btype, getElectronicsMap()->getDetId(_id)); }
std::pair< unsigned, std::vector< int > > EcalDQMBinningService::findBinsNoMap | ( | ObjectType | _otype, |
BinningType | _btype, | ||
const DetId & | _id | ||
) | const |
Definition at line 312 of file EcalDQMBinningService.cc.
References newFWLiteAna::bin, Exception, findBins(), findOffset(), kDCC, kEcal2P, kSM, kSuperCrystal, kTCC, kTriggerTower, SurfaceOrientation::outer, run_regression::ret, ecaldqm::tccId(), ecaldqm::towerId(), and ecaldqm::ttId().
Referenced by ecaldqm::MESetDet1D::find_(), and findBinsNoMap().
{ using namespace std; // Not yet implemented to scale to general cases if(!((_otype == kSM && _btype == kSuperCrystal) || (_otype == kSM && _btype == kTriggerTower) || (_otype == kEcal2P && _btype == kDCC) || (_otype == kEcal2P && _btype == kTCC))) throw cms::Exception("NotImplemented") << "1D bin finding only for SM - SC plots or Ecal2P - DCC plots" << std::endl; if(_otype == kEcal2P && (_btype == kDCC || _btype == kTCC)) return findBins(_otype, _btype, _id); pair<unsigned, std::vector<int> > ret(-1, std::vector<int>(0)); ret.first = findOffset(_otype, _id); if(ret.first == unsigned(-1)) return ret; if(_otype == kSM && _btype == kSuperCrystal) ret.second.push_back(towerId(_id)); else if(_otype == kSM && _btype == kTriggerTower){ unsigned tccid(tccId(_id)); if(tccid >= 37 && tccid <= 72) // EB ret.second.push_back(ttId(_id)); else{ unsigned bin(ttId(_id)); tccid = (tccid - 1) % 36; bool outer(tccid >= 18); tccid = (tccid + 1) % 18; // TCC numbering is shifted wrt DCC numbering by one if(outer) bin += 48; bin += (tccid % 2) * (outer ? 16 : 24); ret.second.push_back(bin); } } return ret; }
void EcalDQMBinningService::findBinsProjEta_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 1166 of file EcalDQMBinningService2.cc.
References EEDetId::denseIndex(), EcalBarrel, EcalEndcap, EcalTriggerTower, ecaldqm::getTrigTowerMap(), EBDetId::ieta(), getHLTprescales::index, EEDetId::iquadrant(), ecaldqm::isEcalScDetId(), EEDetId::ix(), EEDetId::iy(), EEDetId::kEEhalf, ecaldqm::kEEp, EcalTrigTowerDetId::subDet(), DetId::subdetId(), and EEDetId::zside().
Referenced by findBins().
{ using namespace std; switch(_id.subdetId()){ case EcalBarrel: { EBDetId ebid(_id); unsigned index(ebid.ieta() < 0 ? ebid.ieta() + 85 : ebid.ieta() + 84); if(_okey == kEcal) index += EEDetId::kEEhalf / 2; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalEndcap: if(!isEcalScDetId(_id)){ EEDetId eeid(_id); if(eeid.iquadrant() < 3) eeid = EEDetId(eeid.ix(), 101 - eeid.iy(), eeid.zside()); unsigned index(eeid.denseIndex()); if(_okey == kEEp) index -= EEDetId::kEEhalf; else if(_okey == kEcal && eeid.zside() > 0) index += 170 - EEDetId::kEEhalf / 2; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalTriggerTower: { EcalTrigTowerDetId ttid(_id); vector<DetId> detIds(getTrigTowerMap()->constituentsOf(ttid)); set<int> binset; if(ttid.subDet() == EcalBarrel){ for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr){ EBDetId ebid(*idItr); unsigned index(ebid.ieta() < 0 ? ebid.ieta() + 85 : ebid.ieta() + 84); if(_okey == kEcal) index += EEDetId::kEEhalf / 2; if(index < _binMap.size()) binset.insert(_binMap[index]); } } else{ for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr){ EEDetId eeid(*idItr); if(eeid.iquadrant() < 3) eeid = EEDetId(eeid.ix(), eeid.iy() <= 50 ? eeid.iy() : 101 - eeid.iy(), eeid.zside()); unsigned index(eeid.denseIndex()); if(_okey == kEEp) index -= EEDetId::kEEhalf; else if(_okey == kEcal && eeid.zside() > 0) index += 170 - EEDetId::kEEhalf / 2; if(index < _binMap.size()) binset.insert(_binMap[index]); } } for(set<int>::iterator binItr(binset.begin()); binItr != binset.end(); ++binItr) _bins.push_back(*binItr); break; } default: break; } }
void EcalDQMBinningService::findBinsProjPhi_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 1224 of file EcalDQMBinningService2.cc.
References EEDetId::denseIndex(), EcalBarrel, EcalEndcap, EcalTriggerTower, ecaldqm::getTrigTowerMap(), getHLTprescales::index, EBDetId::iphi(), ecaldqm::isEcalScDetId(), EEDetId::kEEhalf, EcalTrigTowerDetId::subDet(), DetId::subdetId(), and EEDetId::zside().
Referenced by findBins().
{ using namespace std; switch(_id.subdetId()){ case EcalBarrel: { EBDetId ebid(_id); unsigned index(ebid.iphi() - 1); if(_okey == kEcal) index += EEDetId::kEEhalf; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalEndcap: if(!isEcalScDetId(_id)){ EEDetId eeid(_id); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) index -= EEDetId::kEEhalf; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalTriggerTower: { EcalTrigTowerDetId ttid(_id); vector<DetId> detIds(getTrigTowerMap()->constituentsOf(ttid)); set<int> binset; if(ttid.subDet() == EcalBarrel){ for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr){ EBDetId ebid(*idItr); unsigned index(ebid.iphi() - 1); if(_okey == kEcal) index += EEDetId::kEEhalf; if(index < _binMap.size()) binset.insert(_binMap[index]); } } else{ for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr){ EEDetId eeid(*idItr); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) index -= EEDetId::kEEhalf; if(index < _binMap.size()) binset.insert(_binMap[index]); } } for(set<int>::iterator binItr(binset.begin()); binItr != binset.end(); ++binItr) _bins.push_back(*binItr); break; } default: break; } }
void EcalDQMBinningService::findBinsSuperCrystal_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 1100 of file EcalDQMBinningService2.cc.
References EcalTrigTowerDetId::denseIndex(), EcalScDetId::denseIndex(), EcalBarrel, EcalEndcap, EcalTriggerTower, getHLTprescales::index, ecaldqm::isEcalScDetId(), EcalTrigTowerDetId::kEBTotalTowers, ecaldqm::kEEp, ecaldqm::kSM, EEDetId::sc(), EcalScDetId::SC_PER_EE_CNT, DetId::subdetId(), EcalScDetId::zside(), and EEDetId::zside().
Referenced by findBins().
{ bool fullRange(_okey == kSM || _okey == kEcal); switch(_id.subdetId()){ case EcalBarrel: { unsigned index(EBDetId(_id).tower().denseIndex()); if(fullRange) index += EcalScDetId::SC_PER_EE_CNT; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalEndcap: { int zside(0); unsigned index; if (isEcalScDetId(_id)) { EcalScDetId scid(_id); zside = scid.zside(); index = scid.denseIndex(); } else { EEDetId eeid(_id); zside = eeid.zside(); index = eeid.sc().denseIndex(); } if(zside > 0) { if(fullRange) index += EcalTrigTowerDetId::kEBTotalTowers; else if(_okey == kEEp) index -= EcalScDetId::SC_PER_EE_CNT; } if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalTriggerTower: // btype == kSuperCrystal && subdet == EcalTriggerTower => only happens for EB { EcalTrigTowerDetId ttid(_id); unsigned index(ttid.denseIndex()); if(fullRange) index += EcalScDetId::SC_PER_EE_CNT; if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } default: break; } }
void EcalDQMBinningService::findBinsTCC_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 1156 of file EcalDQMBinningService2.cc.
References getHLTprescales::index, ecaldqm::kEEp, ecaldqm::kEEpLow, and ecaldqm::tccId().
Referenced by findBins().
void EcalDQMBinningService::findBinsTriggerTower_ | ( | const DetId & | _id, |
ObjectType | _okey, | ||
const std::vector< int > & | _binMap, | ||
std::vector< int > & | _bins | ||
) | const [private] |
Definition at line 1052 of file EcalDQMBinningService2.cc.
References EEDetId::denseIndex(), EcalBarrel, EcalEndcap, EcalTriggerTower, ecaldqm::getTrigTowerMap(), EcalTrigTowerDetId::hashedIndex(), getHLTprescales::index, ecaldqm::isEcalScDetId(), EcalTrigTowerDetId::kEBTotalTowers, EEDetId::kEEhalf, EcalTrigTowerDetId::subDet(), DetId::subdetId(), and EEDetId::zside().
Referenced by findBins().
{ using namespace std; switch(_id.subdetId()){ case EcalBarrel: { EcalTrigTowerDetId ttid(EBDetId(_id).tower()); unsigned index(ttid.hashedIndex() + EEDetId::kEEhalf); if(index < _binMap.size()) _bins.push_back(_binMap[index]); break; } case EcalEndcap: if(!isEcalScDetId(_id)){ vector<DetId> detIds(getTrigTowerMap()->constituentsOf(getTrigTowerMap()->towerOf(_id))); for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr){ EEDetId eeid(*idItr); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) index += EcalTrigTowerDetId::kEBTotalTowers; if(index < _binMap.size()) _bins.push_back(_binMap[index]); } break; } case EcalTriggerTower: { EcalTrigTowerDetId ttid(_id); if(ttid.subDet() == EcalBarrel){ unsigned index(ttid.hashedIndex() + EEDetId::kEEhalf); if(index < _binMap.size()) _bins.push_back(_binMap[index]); } else{ vector<DetId> detIds(getTrigTowerMap()->constituentsOf(ttid)); for(vector<DetId>::iterator idItr(detIds.begin()); idItr != detIds.end(); ++idItr){ EEDetId eeid(*idItr); unsigned index(eeid.denseIndex()); if(eeid.zside() > 0) index += EcalTrigTowerDetId::kEBTotalTowers; if(index < _binMap.size()) _bins.push_back(_binMap[index]); } } break; } default: break; } }
unsigned EcalDQMBinningService::findOffset | ( | ObjectType | _otype, |
const DetId & | _id | ||
) | const |
Definition at line 358 of file EcalDQMBinningService.cc.
References cache_, cacheId_, cacheOtype_, ecaldqm::dccId(), kDCC, kEB, ecaldqm::kEBpHigh, kEcal, kEcal2P, kEcal3P, kEcalMEM2P, kEE, kEEm, ecaldqm::kEEmHigh, kEEp, and kUser.
Referenced by ecaldqm::MESetTrend::fill(), ecaldqm::MESetEcal::fill(), ecaldqm::MESetDet0D::fill(), findBins(), findBinsNoMap(), and findOffset().
{ if(_otype == cacheOtype_ && _id == cacheId_) return cache_.first; unsigned iSM(dccId(_id) - 1); if(_otype == kEcal3P){ if(iSM <= kEEmHigh) return findOffset(kEcal3P, kUser, (unsigned)kEEm + 1); else if(iSM <= kEBpHigh) return findOffset(kEcal3P, kUser, (unsigned)kEB + 1); else return findOffset(kEcal3P, kUser, (unsigned)kEEp + 1); } else if(_otype == kEcal2P){ if(iSM <= kEEmHigh) return findOffset(kEcal2P, kUser, (unsigned)kEE + 1); else if(iSM <= kEBpHigh) return findOffset(kEcal2P, kUser, (unsigned)kEB + 1); else return findOffset(kEcal2P, kUser, (unsigned)kEE + 1); } else if(_otype == kEcal) return 0; else if(_otype == kEcalMEM2P){ if(iSM <= kEEmHigh) return findOffset(kEcal2P, kUser, (unsigned)kEE + 1); else if(iSM <= kEBpHigh) return findOffset(kEcal2P, kUser, (unsigned)kEB + 1); else return findOffset(kEcal2P, kUser, (unsigned)kEE + 1); } return findOffset(_otype, kDCC, iSM + 1); }
unsigned EcalDQMBinningService::findOffset | ( | ObjectType | _otype, |
const EcalElectronicsId & | _id | ||
) | const |
Definition at line 386 of file EcalDQMBinningService.cc.
References findOffset(), and ecaldqm::getElectronicsMap().
{ return findOffset(_otype, getElectronicsMap()->getDetId(_id)); }
unsigned EcalDQMBinningService::findOffset | ( | ObjectType | _otype, |
BinningType | _btype, | ||
unsigned | _dcctccid | ||
) | const |
Definition at line 392 of file EcalDQMBinningService.cc.
References ecaldqm::dccNoMEM, kDCC, kEB, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, kEBTCCHigh, kEBTCCLow, kEcal, kEcal2P, kEcal3P, kEcalMEM2P, kEE, kEEm, ecaldqm::kEEmHigh, kEEmTCCHigh, kEEp, ecaldqm::kEEpHigh, ecaldqm::kEEpLow, kEEpTCCHigh, kEEpTCCLow, kSM, kSMMEM, kTCC, kUser, ecaldqm::memDCCIndex(), nDCC, and nTCC.
{ unsigned iSM(_dcctccid - 1); switch(_otype){ case kEB: if(_btype == kDCC && iSM >= kEBmLow && iSM <= kEBpHigh) return 0; else if(_btype == kTCC && iSM >= kEBTCCLow && iSM <= kEBTCCHigh) return 0; return -1; case kEE: if(_btype == kDCC && (iSM <= kEEmHigh || (iSM >= kEEpLow && iSM <= kEEpHigh))) return 0; else if(_btype == kTCC && (iSM <= kEEmTCCHigh || (iSM >= kEEpTCCLow && iSM <= kEEpTCCHigh))) return 0; return -1; case kEEm: if(_btype == kDCC && iSM <= kEEmHigh) return 0; else if(_btype == kTCC && iSM <= kEEmTCCHigh) return 0; else return -1; case kEEp: if(_btype == kDCC && (iSM >= kEEpLow && iSM <= kEEpHigh)) return 0; else if(_btype == kTCC && (iSM >= kEEpTCCLow && iSM <= kEEpTCCHigh)) return 0; else return -1; case kSM: if(iSM < nDCC) return iSM; else return -1; case kSMMEM: if(iSM < nDCC && dccNoMEM.find(iSM) == dccNoMEM.end()) return memDCCIndex(_dcctccid); else return -1; case kEcal: if(_btype == kDCC && iSM < nDCC) return 0; else if(_btype == kTCC && iSM < nTCC) return 0; else if(_btype == kUser) return 0; else return -1; case kEcal2P: { int iSubdet(iSM); if(_btype == kDCC){ if(iSM <= kEEmHigh) iSubdet = kEE; else if(iSM <= kEBpHigh) iSubdet = kEB; else iSubdet = kEE; } else if(_btype == kTCC){ if(iSM <= kEEmTCCHigh) iSubdet = kEE; else if(iSM <= kEBTCCHigh) iSubdet = kEB; else iSubdet = kEE; } if(iSubdet == kEE || iSubdet == kEEm || iSubdet == kEEp) return 0; else if(iSubdet == kEB) return 1; else return -1; } case kEcal3P: { int iSubdet(iSM); if(_btype == kDCC){ if(iSM <= kEEmHigh) iSubdet = kEEm; else if(iSM <= kEBpHigh) iSubdet = kEB; else iSubdet = kEEp; } else if(_btype == kTCC){ if(iSM <= kEEmTCCHigh) iSubdet = kEEm; else if(iSM <= kEBTCCHigh) iSubdet = kEB; else iSubdet = kEEp; } if(iSubdet == kEEm) return 0; else if(iSubdet == kEB) return 1; else if(iSubdet == kEEp) return 2; else return -1; } case kEcalMEM2P: { int iSubdet(iSM); if(iSubdet == kEE || iSubdet == kEEm || iSubdet == kEEp) return 0; else if(iSubdet == kEB) return 1; else return -1; } default: return -1; } }
const std::vector< int > * EcalDQMBinningService::getBinMap | ( | ObjectType & | _okey, |
BinningType & | _bkey | ||
) | const |
Definition at line 135 of file EcalDQMBinningService.cc.
References binMaps_, gather_cfg::cout, getBinMapEB_(), getBinMapEBMEM_(), getBinMapEcal_(), getBinMapEE_(), getBinMapEEMEM_(), getBinMapSM_(), getBinMapSMMEM_(), kCrystal, kEB, kEBMEM, kEcal, kEE, kEEm, kEEMEM, kEEp, kProjPhi, kSM, kSMMEM, kSuperCrystal, kTriggerTower, nPlotType, nPresetBinnings, findQualityFiles::size, and verbosity_.
Referenced by findBins(), and ecaldqm::MESetEcal::reset().
{ if(unsigned(_okey) >= nPlotType || unsigned(_bkey) >= nPresetBinnings) return 0; if((_okey == kEEm || _okey == kEEp) && _bkey == kProjPhi) _okey = kEE; if(_bkey == kTriggerTower){ if(_okey == kEB) _bkey = kSuperCrystal; else if(_okey == kEE || _okey == kEEm || _okey == kEEp) _bkey = kCrystal; } if(binMaps_[_okey][_bkey].size() != 0) return &(binMaps_[_okey][_bkey]); // Map is not defined yet (or is not going to be) const std::vector<int>* binMap(0); switch(_okey){ case kEB: binMap = getBinMapEB_(_bkey); break; case kEBMEM: binMap = getBinMapEBMEM_(_bkey); break; case kEE: binMap = getBinMapEE_(_bkey, 0); break; case kEEm: binMap = getBinMapEE_(_bkey, -1); break; case kEEp: binMap = getBinMapEE_(_bkey, 1); break; case kEEMEM: binMap = getBinMapEEMEM_(_bkey); break; case kSM: binMap = getBinMapSM_(_bkey); break; case kSMMEM: binMap = getBinMapSMMEM_(_bkey); break; case kEcal: binMap = getBinMapEcal_(_bkey); break; default: return 0; } if(verbosity_ > 0){ std::cout << "EcalDQMBinningService: Booked new binMap for " << int(_okey) << " " << int(_bkey); std::cout << " (Current memory usage: "; int bytes(0); for(unsigned iO(0); iO < nPlotType; iO++) for(unsigned iB(0); iB < nPresetBinnings; iB++) bytes += binMaps_[iO][iB].size() * sizeof(int); std::cout << bytes / 1024. << "kB)" << std::endl; } return binMap; }
const std::vector< int > * EcalDQMBinningService::getBinMapEB_ | ( | BinningType | _bkey | ) | const [private] |
Definition at line 395 of file EcalDQMBinningService2.cc.
References eta(), ecalpyutils::hashedIndex(), i, ecaldqm::kCrystal, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, EcalTrigTowerDetId::kEBTotalTowers, EBDetId::kSizeForDenseIndexing, ecaldqm::kSuperCrystal, phi, and Pi.
Referenced by getBinMap().
{ std::vector<int>& binMap(binMaps_[kEB][_bkey]); switch(_bkey){ case kCrystal: binMap.resize(EBDetId::kSizeForDenseIndexing); // EBDetId -> bin for(int ix = 1; ix <= 360; ix++){ for(int iy = 1; iy <= 170; iy++){ uint32_t dIndex(EBDetId(iy < 86 ? iy - 86 : iy - 85, ix).hashedIndex()); binMap[dIndex] = 360 * (iy - 1) + ix ; } } return &binMap; case kSuperCrystal: binMap.resize(EcalTrigTowerDetId::kEBTotalTowers); // EcalTrigTowerDetId -> bin for(int ix = 1; ix <= 72; ix++){ for(int iy = 1; iy <= 34; iy++){ int ieta(iy < 18 ? (iy - 18) * 5 : (iy - 17) * 5); int iphi(ix * 5); uint32_t dIndex(EBDetId(ieta, iphi).tower().hashedIndex()); binMap[dIndex] = 72 * (iy - 1) + ix; } } return &binMap; case kDCC: { int nEBDCC(kEBpHigh - kEBmLow + 1); binMap.resize(nEBDCC); // DCCId (shifted) -> bin for(int ix = 1; ix <= nEBDCC; ix++) binMap[ix - 1] = ix; } return &binMap; case kTCC: { int nEBTCC(kEBTCCHigh - kEBTCCLow + 1); binMap.resize(nEBTCC); // TCCId (shifted) -> bin for(int ix = 1; ix <= nEBTCC; ix++) binMap[ix - 1] = ix; } return &binMap; case kProjEta: { float binEdges[nEBEtaBins + 1]; for(int i(0); i <= nEBEtaBins; i++) binEdges[i] = -etaBound_ + 2. * etaBound_ / nEBEtaBins * i; binMap.resize(170); // ieta -> bin for(int ieta(-85); ieta <= 85; ieta++){ if(ieta == 0) continue; EBDetId ebid(ieta, 1); float eta(geometry_->getGeometry(ebid)->getPosition().eta()); float* pBin(std::upper_bound(binEdges, binEdges + nEBEtaBins + 1, eta)); uint32_t dIndex(ieta < 0 ? ieta + 85 : ieta + 84); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } return &binMap; case kProjPhi: { float binEdges[nPhiBins + 1]; for(int i(0); i <= nPhiBins; i++) binEdges[i] = TMath::Pi() * (-1./18. + 2. / nPhiBins * i); binMap.resize(360); // iphi -> bin for(int iphi(1); iphi <= 360; iphi++){ EBDetId ebid(1, iphi); float phi(geometry_->getGeometry(ebid)->getPosition().phi()); if(phi < -TMath::Pi() * 1./18.) phi += 2. * TMath::Pi(); float* pBin(std::upper_bound(binEdges, binEdges + nPhiBins + 1, phi)); uint32_t dIndex(iphi - 1); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } return &binMap; default: return 0; } }
const std::vector< int > * EcalDQMBinningService::getBinMapEBMEM_ | ( | BinningType | _bkey | ) | const [private] |
Definition at line 480 of file EcalDQMBinningService2.cc.
References ecaldqm::kCrystal, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, and ecaldqm::kEBpLow.
Referenced by getBinMap().
{ if(_bkey != kCrystal) return 0; int nEBMEM((kEBpHigh - kEBmLow + 1) * 10); std::vector<int>& binMap(binMaps_[kEBMEM][kCrystal]); binMap.resize(nEBMEM); // EcalPnDiodeDetId -> bin; original hashing (DCCId * 10 + PnId) for(int ix = 1; ix <= 18; ix++){ for(int iy = 1; iy <= 20; iy++){ int idcc((iy < 11 ? kEBmLow : kEBpLow) + ix - 1); int pnId(iy < 11 ? 11 - iy : iy - 10); uint32_t dIndex((idcc - kEBmLow) * 10 + pnId - 1); binMap[dIndex] = 18 * (iy - 1) + ix; } } return &binMap; }
const std::vector< int > * EcalDQMBinningService::getBinMapEcal_ | ( | BinningType | _bkey | ) | const [private] |
Definition at line 837 of file EcalDQMBinningService2.cc.
References eta(), EEDetId::hashedIndex(), ecalpyutils::hashedIndex(), i, ecaldqm::kCrystal, EcalTrigTowerDetId::kEBTotalTowers, EEDetId::kEEhalf, ecaldqm::kEEmLow, ecaldqm::kEEpHigh, EBDetId::kSizeForDenseIndexing, EEDetId::kSizeForDenseIndexing, EcalScDetId::kSizeForDenseIndexing, ecaldqm::kSuperCrystal, phi, Pi, EcalScDetId::SC_PER_EE_CNT, EEDetId::validDetId(), and EcalScDetId::validDetId().
Referenced by getBinMap().
{ std::vector<int>& binMap(binMaps_[kEcal][_bkey]); switch(_bkey){ case kCrystal: binMap.resize(EBDetId::kSizeForDenseIndexing + EEDetId::kSizeForDenseIndexing); // DetId -> bin for(int ix = 1; ix <= 360; ix++){ for(int iy = 101; iy <= 270; iy++){ uint32_t dIndex(EBDetId(iy < 186 ? iy - 186 : iy - 185, ix).hashedIndex() + EEDetId::kEEhalf); binMap[dIndex] = 360 * (iy - 1) + ix ; } } for(int ix = 1; ix <= 200; ix++){ int iix(ix > 100 ? ix - 100 : ix); int zside(ix > 100 ? 1 : -1); for(int iy = 1; iy <= 100; iy++){ if(!EEDetId::validDetId(iix, iy, zside)) continue; uint32_t dIndex(EEDetId(iix, iy, zside).hashedIndex()); if(zside == 1) dIndex += EBDetId::kSizeForDenseIndexing; binMap[dIndex] = 360 * (iy - 1) + ix; } } return &binMap; case kSuperCrystal: binMap.resize(EcalTrigTowerDetId::kEBTotalTowers + EcalScDetId::kSizeForDenseIndexing); // EcalTrigTowerDetId -> bin for(int ix = 1; ix <= 72; ix++){ for(int iy = 21; iy <= 54; iy++){ int ieta(iy < 38 ? (iy - 38) * 5 : (iy - 37) * 5); int iphi(ix * 5); uint32_t dIndex(EBDetId(ieta, iphi).tower().hashedIndex() + EcalScDetId::SC_PER_EE_CNT); binMap[dIndex] = 72 * (iy - 1) + ix; } } for(int ix = 1; ix <= 40; ix++){ int iix((ix - 1) % 20 + 1); int zside(ix > 20 ? 1 : -1); for(int iy = 1; iy <= 20; iy++){ if(!EcalScDetId::validDetId(iix, iy, zside)) continue; uint32_t dIndex(EcalScDetId(iix, iy, zside).hashedIndex()); if(zside == 1) dIndex += EcalTrigTowerDetId::kEBTotalTowers; binMap[dIndex] = 72 * (iy - 1) + ix; } } return &binMap; case kProjEta: { float binEdges[nEBEtaBins + 2 * nEEEtaBins + 1]; for(int i(0); i <= nEEEtaBins; i++) binEdges[i] = -3. + (3. - etaBound_) / nEEEtaBins * i; for(int i(1); i <= nEBEtaBins; i++) binEdges[i + nEEEtaBins] = -etaBound_ + 2. * etaBound_ / nEBEtaBins * i; for(int i(1); i <= nEEEtaBins; i++) binEdges[i + nEEEtaBins + nEBEtaBins] = etaBound_ + (3. - etaBound_) / nEEEtaBins * i; float* lowEdge(binEdges); binMap.resize(170 + EEDetId::kEEhalf); // EEDetId (half) -> bin for(int ix = 1; ix <= 100; ix++){ for(int iy = 1; iy <= 50; iy++){ if(!EEDetId::validDetId(ix, iy, -1)) continue; EEDetId eeid(ix, iy, -1); float eta(geometry_->getGeometry(eeid)->getPosition().eta()); float* pBin(std::upper_bound(lowEdge, lowEdge + nEEEtaBins + 1, eta)); uint32_t dIndex(eeid.hashedIndex()); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } lowEdge += nEEEtaBins; for(int ieta(-85); ieta <= 85; ieta++){ if(ieta == 0) continue; EBDetId ebid(ieta, 1); float eta(geometry_->getGeometry(ebid)->getPosition().eta()); float* pBin(std::upper_bound(lowEdge, lowEdge + nEBEtaBins + 1, eta)); uint32_t dIndex(ieta < 0 ? ieta + 85 : ieta + 84); dIndex += EEDetId::kEEhalf / 2; binMap[dIndex] = static_cast<int>(pBin - binEdges); } lowEdge += nEBEtaBins; for(int ix = 1; ix <= 100; ix++){ for(int iy = 1; iy <= 50; iy++){ if(!EEDetId::validDetId(ix, iy, 1)) continue; EEDetId eeid(ix, iy, 1); float eta(geometry_->getGeometry(eeid)->getPosition().eta()); float* pBin(std::upper_bound(lowEdge, lowEdge + nEEEtaBins + 1, eta)); uint32_t dIndex(eeid.hashedIndex() - EEDetId::kEEhalf / 2 + 170); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } } return &binMap; case kProjPhi: { float binEdges[nPhiBins + 1]; for(int i(0); i <= nPhiBins; i++) binEdges[i] = TMath::Pi() * (-1./18. + 2. / nPhiBins * i); binMap.resize(360 + EEDetId::kEEhalf); // EEDetId(-) -> bin for(int ix = 1; ix <= 100; ix++){ for(int iy = 1; iy <= 100; iy++){ if(!EEDetId::validDetId(ix, iy, -1)) continue; EEDetId eeid(ix, iy, -1); float phi(geometry_->getGeometry(eeid)->getPosition().phi()); if(phi < -TMath::Pi() * 1./18.) phi += 2. * TMath::Pi(); float* pBin(std::upper_bound(binEdges, binEdges + nPhiBins + 1, phi)); uint32_t dIndex(eeid.hashedIndex()); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } for(int iphi(1); iphi <= 360; iphi++){ EBDetId ebid(1, iphi); float phi(geometry_->getGeometry(ebid)->getPosition().phi()); if(phi < -TMath::Pi() * 1./18.) phi += 2. * TMath::Pi(); float* pBin(std::upper_bound(binEdges, binEdges + nPhiBins + 1, phi)); uint32_t dIndex(iphi - 1 + EEDetId::kEEhalf); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } return &binMap; case kTCC: binMap.resize(nTCC); for(int ix = 1; ix <= nTCC; ix++) binMap[ix - 1] = ix; return &binMap; case kDCC: binMap.resize(nDCC); for(int ix(kEEmLow); ix <= kEEpHigh; ix++) binMap[ix] = ix + 1; return &binMap; default: return 0; } }
const std::vector< int > * EcalDQMBinningService::getBinMapEE_ | ( | BinningType | _bkey, |
int | _zside | ||
) | const [private] |
Definition at line 500 of file EcalDQMBinningService2.cc.
References eta(), EEDetId::hashedIndex(), ecalpyutils::hashedIndex(), i, ecaldqm::kCrystal, EEDetId::kEEhalf, ecaldqm::kEEm, ecaldqm::kEEmHigh, ecaldqm::kEEmLow, ecaldqm::kEEp, ecaldqm::kEEpHigh, ecaldqm::kEEpLow, EEDetId::kSizeForDenseIndexing, EcalScDetId::kSizeForDenseIndexing, ecaldqm::kSuperCrystal, phi, Pi, EcalScDetId::SC_PER_EE_CNT, EEDetId::validDetId(), and EcalScDetId::validDetId().
Referenced by getBinMap().
{ unsigned okey(0); switch(_zside){ case -1: okey = kEEm; break; case 0: okey = kEE; break; case 1: okey = kEEp; break; default: return 0; } std::vector<int>& binMap(binMaps_[okey][_bkey]); int ixmax(_zside == 0 ? 200 : 100); int zside(_zside); switch(_bkey){ case kCrystal: // EEDetId -> bin binMap.resize(_zside == 0 ? EEDetId::kSizeForDenseIndexing : EEDetId::kEEhalf); for(int ix = 1; ix <= ixmax; ix++){ if(_zside == 0) zside = (ix <= 100 ? -1 : 1); int iix(_zside == 0 && ix > 100 ? ix - 100 : ix); for(int iy = 1; iy <= 100; iy++){ if(!EEDetId::validDetId(iix, iy, zside)) continue; uint32_t dIndex(EEDetId(iix, iy, zside).hashedIndex()); if(_zside == 1) dIndex -= EEDetId::kEEhalf; binMap[dIndex] = ixmax * (iy - 1) + ix; } } return &binMap; case kSuperCrystal: // EcalScDetId -> bin binMap.resize(_zside == 0 ? EcalScDetId::kSizeForDenseIndexing : EcalScDetId::SC_PER_EE_CNT); for(int ix = 1; ix <= ixmax / 5; ix++){ if(_zside == 0) zside = (ix <= 20 ? -1 : 1); int iix(_zside == 0 && ix > 20 ? ix - 20 : ix); for(int iy = 1; iy <= 20; iy++){ if(!EcalScDetId::validDetId(iix, iy, zside)) continue; uint32_t dIndex(EcalScDetId(iix, iy, zside).hashedIndex()); if(_zside == 1) dIndex -= EcalScDetId::SC_PER_EE_CNT; binMap[dIndex] = ixmax / 5 * (iy - 1) + ix; } } return &binMap; case kDCC: { int nEEDCC(kEEmHigh - kEEmLow + kEEpHigh - kEEpLow + 2); if(_zside != 0) nEEDCC /= 2; binMap.resize(nEEDCC); // DCCId (shifted) -> bin for(int ix = 1; ix <= nEEDCC; ix++) binMap[ix - 1] = (ix + 5) % 9 + 1 + 9 * ((ix - 1) / 9); } return &binMap; case kTCC: { int nEETCC(kEEmTCCHigh - kEEmTCCLow + kEEpTCCHigh - kEEpTCCLow + 2); if(_zside != 0) nEETCC /= 2; binMap.resize(nEETCC); // TCCId (shifted) -> bin for(int ix = 1; ix <= nEETCC; ix++) binMap[ix - 1] = ix; } return &binMap; case kProjEta: { if(_zside == 0) return 0; float binEdges[nEEEtaBins + 1]; if(_zside < 0){ for(int i(0); i <= nEEEtaBins; i++) binEdges[i] = -3. + (3. - etaBound_) / nEEEtaBins * i; } else{ for(int i(0); i <= nEEEtaBins; i++) binEdges[i] = etaBound_ + (3. - etaBound_) / nEEEtaBins * i; } binMap.resize(EEDetId::kEEhalf / 2); // EEDetId (half) -> bin // Only a quadrant is really necessary, but the hashed index cannot be resolved for quadrants for(int ix = 1; ix <= 100; ix++){ for(int iy = 1; iy <= 50; iy++){ if(!EEDetId::validDetId(ix, iy, _zside)) continue; EEDetId eeid(ix, iy, _zside); float eta(geometry_->getGeometry(eeid)->getPosition().eta()); float* pBin(std::upper_bound(binEdges, binEdges + nEEEtaBins + 1, eta)); uint32_t dIndex(eeid.hashedIndex()); if(_zside == 1) dIndex -= EEDetId::kEEhalf; binMap[dIndex] = static_cast<int>(pBin - binEdges); } } } return &binMap; case kProjPhi: { if(_zside != 0) return 0; float binEdges[nPhiBins + 1]; for(int i(0); i <= nPhiBins; i++) binEdges[i] = TMath::Pi() * (-1./18. + 2. / nPhiBins * i); binMap.resize(EEDetId::kEEhalf); // EEDetId(-) -> bin for(int ix = 1; ix <= 100; ix++){ for(int iy = 1; iy <= 100; iy++){ if(!EEDetId::validDetId(ix, iy, -1)) continue; EEDetId eeid(ix, iy, -1); float phi(geometry_->getGeometry(eeid)->getPosition().phi()); if(phi < -TMath::Pi() * 1./18.) phi += 2. * TMath::Pi(); float* pBin(std::upper_bound(binEdges, binEdges + nPhiBins + 1, phi)); uint32_t dIndex(eeid.hashedIndex()); binMap[dIndex] = static_cast<int>(pBin - binEdges); } } } return &binMap; default: return 0; } }
const std::vector< int > * EcalDQMBinningService::getBinMapEEMEM_ | ( | BinningType | _bkey | ) | const [private] |
Definition at line 621 of file EcalDQMBinningService2.cc.
References ecaldqm::dccNoMEM, ecaldqm::kCrystal, ecaldqm::kEBmLow, ecaldqm::kEEmHigh, ecaldqm::kEEmLow, ecaldqm::kEEpHigh, ecaldqm::kEEpLow, and evf::evtn::offset().
Referenced by getBinMap().
{ if(_bkey != kCrystal) return 0; std::vector<int>& binMap(binMaps_[kEEMEM][kCrystal]); binMap.resize((kEEmHigh - kEEmLow + kEEpHigh - kEEpLow + 2) * 10); // EcalPnDiodeDetId -> bin (see above) int memIx(1); int iEEDCC(-1); int offset(0); for(int iSM(kEEmLow); iSM <= kEEpHigh; iSM++){ iEEDCC++; if (dccNoMEM.find(iSM) != dccNoMEM.end()) { for (int ich(0); ich < 10; ich++) binMap[iEEDCC * 10 + ich] = 0; continue; } if (iSM == kEBmLow) { iSM = kEEpLow; offset = 10; memIx = 1; } for(int iy = 1 + offset; iy <= 10 + offset; iy++){ int pnId(iy < 11 ? 11 - iy : iy - 10); uint32_t dIndex(iEEDCC * 10 + pnId - 1); binMap[dIndex] = 4 * (iy - 1) + memIx; } memIx++; } return &binMap; }
const std::vector< int > * EcalDQMBinningService::getBinMapSM_ | ( | BinningType | _bkey | ) | const [private] |
Definition at line 655 of file EcalDQMBinningService2.cc.
References ecaldqm::getElectronicsMap(), ecalpyutils::hashedIndex(), i, errorMatrix2Lands_multiChannel::id, ecaldqm::kCrystal, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, ecaldqm::kEBpLow, EcalTrigTowerDetId::kEBTotalTowers, EEDetId::kEEhalf, ecaldqm::kEEm02, ecaldqm::kEEm08, ecaldqm::kEEmHigh, ecaldqm::kEEp02, ecaldqm::kEEp08, ecaldqm::kEEpLow, EBDetId::kSizeForDenseIndexing, EcalScDetId::kSizeForDenseIndexing, EEDetId::kSizeForDenseIndexing, ecaldqm::kSM, ecaldqm::kSuperCrystal, ecaldqm::kTriggerTower, EcalScDetId::SC_PER_EE_CNT, and EcalScDetId::validDetId().
Referenced by getBinMap().
{ int totalBins(0); std::vector<int>& binMap(binMaps_[kSM][_bkey]); switch(_bkey){ case kCrystal: binMap.resize(EBDetId::kSizeForDenseIndexing + EEDetId::kSizeForDenseIndexing); for (int iDCC(0); iDCC < nDCC; iDCC++) { if(iDCC >= kEBmLow && iDCC <= kEBpHigh){ for(int ix = 1; ix <= nEBSMEta; ix++){ for(int iy = 1; iy <= nEBSMPhi; iy++){ int ieta(ix + xlow(iDCC)); int iphi(iy + ylow(iDCC)); if (iDCC >= kEBpLow){ iphi -= 1; iphi *= -1; } else ieta *= -1; uint32_t dIndex(EBDetId(ieta, iphi).hashedIndex() + EEDetId::kEEhalf); binMap[dIndex] = totalBins + nEBSMEta * (iy - 1) + ix; } } totalBins += nEBSMBins; } else{ std::vector<DetId> crystals(getElectronicsMap()->dccConstituents(iDCC + 1)); int nEEX(nEESMX), nEEBins(nEESMBins); if(iDCC == kEEm02 || iDCC == kEEm08 || iDCC == kEEp02 || iDCC == kEEp08){ nEEX = nEESMXExt; nEEBins = nEESMBinsExt; } for(std::vector<DetId>::iterator idItr(crystals.begin()); idItr != crystals.end(); ++idItr){ EEDetId id(*idItr); uint32_t dIndex(id.hashedIndex()); int ix(id.ix() - xlow(iDCC)); int iy(id.iy() - ylow(iDCC)); if (id.zside() > 0) dIndex += EBDetId::kSizeForDenseIndexing; binMap[dIndex] = totalBins + nEEX * (iy - 1) + ix; } totalBins += nEEBins; } } return &binMap; case kSuperCrystal: binMap.resize(EcalTrigTowerDetId::kEBTotalTowers + EcalScDetId::kSizeForDenseIndexing); // EcalTrigTowerDetId / EcalScDetId -> bin for(int iSM(0); iSM < nDCC; iSM++){ if(iSM >= kEBmLow && iSM <= kEBpHigh){ for(int ix = 1; ix <= nEBSMEta; ix += 5){ for(int iy = 1; iy <= nEBSMPhi; iy += 5){ int ieta(ix + xlow(iSM)); int iphi(iy + ylow(iSM)); if(iSM >= kEBpLow){ iphi -= 1; iphi *= -1; } else ieta *= -1; uint32_t dIndex(EBDetId(ieta, iphi).tower().hashedIndex()); binMap[dIndex + EcalScDetId::SC_PER_EE_CNT] = totalBins + nEBSMEta / 5 * (iy - 1) / 5 + (ix - 1) / 5 + 1; } } totalBins += nEBSMBins / 25; } else{ int nEEX(nEESMX), nEEBins(nEESMBins); if(iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08){ nEEX = nEESMXExt; nEEBins = nEESMBinsExt; } for (int ix(1); ix <= nEEX / 5; ix++) { for (int iy(1); iy <= nEESMY / 5; iy++) { int sciz(1); if (iSM <= kEEmHigh) sciz = -1; int scix(ix + xlow(iSM) / 5); int sciy(iy + ylow(iSM) / 5); if(scix <= 0 || scix > 20 || sciy <= 0 || sciy > 20) continue; if(!EcalScDetId::validDetId(scix, sciy, sciz)) continue; uint32_t dIndex(EcalScDetId(scix, sciy, sciz).hashedIndex()); if(sciz > 0) dIndex += EcalTrigTowerDetId::kEBTotalTowers; binMap[dIndex] = totalBins + nEEX / 5 * (iy - 1) + ix; } } totalBins += nEEBins / 25; } } return &binMap; case kTriggerTower: binMap.resize(EcalTrigTowerDetId::kEBTotalTowers + EEDetId::kSizeForDenseIndexing); // EcalTrigTowerDetId / EEDetId -> bin for(int iSM(0); iSM < nDCC; iSM++){ if(iSM >= kEBmLow && iSM <= kEBpHigh){ for(int ix = 1; ix <= nEBSMEta; ix += 5){ for(int iy = 1; iy <= nEBSMPhi; iy += 5){ int ieta(ix + xlow(iSM)); int iphi(iy + ylow(iSM)); if(iSM >= kEBpLow){ iphi -= 1; iphi *= -1; } else ieta *= -1; uint32_t dIndex(EBDetId(ieta, iphi).tower().hashedIndex()); binMap[dIndex + EEDetId::kEEhalf] = totalBins + nEBSMEta / 5 * (iy - 1) / 5 + (ix - 1) / 5 + 1; } } totalBins += nEBSMBins / 25; } else{ int nEEX(nEESMX), nEEBins(nEESMBins); if(iSM == kEEm02 || iSM == kEEm08 || iSM == kEEp02 || iSM == kEEp08){ nEEX = nEESMXExt; nEEBins = nEESMBinsExt; } int tccid[4]; tccid[0] = ((iSM % 9) * 2 + 17) % 18 + 1; tccid[1] = tccid[0] % 18 + 1; tccid[2] = tccid[0] + 18; tccid[3] = tccid[1] + 18; if(iSM >= int(kEEpLow)) for(int i(0); i < 4; i++) tccid[i] += kEEpTCCLow; for(int it(0); it < 4; it++){ std::vector<DetId> crystals(getElectronicsMap()->tccConstituents(tccid[it])); for(std::vector<DetId>::iterator idItr(crystals.begin()); idItr != crystals.end(); ++idItr){ EEDetId id(*idItr); uint32_t dIndex(id.hashedIndex()); int ix(id.ix() - xlow(iSM)); int iy(id.iy() - ylow(iSM)); if (id.zside() > 0) dIndex += EcalTrigTowerDetId::kEBTotalTowers; binMap[dIndex] = totalBins + nEEX * (iy - 1) + ix; } } totalBins += nEEBins; } } return &binMap; default: return 0; } }
const std::vector< int > * EcalDQMBinningService::getBinMapSMMEM_ | ( | BinningType | _bkey | ) | const [private] |
Definition at line 809 of file EcalDQMBinningService2.cc.
References ecaldqm::dccNoMEM, ecaldqm::kCrystal, and ecaldqm::kEBmHigh.
Referenced by getBinMap().
{ if(_bkey != kCrystal) return 0; int totalBins(0); std::vector<int>& binMap(binMaps_[kSMMEM][_bkey]); binMap.resize(nDCC * 10); // EcalPnDiodeDetId -> bin (see above) for(int iSM(0); iSM < nDCC; iSM++){ if (dccNoMEM.find(iSM) != dccNoMEM.end()) { for (int ich(0); ich < 10; ich++) binMap[iSM * 10 + ich] = 0; continue; } for(int ix = 1; ix <= 10; ix++){ int pnId(iSM <= kEBmHigh ? 11 - ix : ix); uint32_t dIndex(iSM * 10 + pnId - 1); binMap[dIndex] = totalBins + ix; } totalBins += 10; } return &binMap; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinning | ( | ObjectType | _otype, |
BinningType | _btype, | ||
bool | _isMap = true , |
||
unsigned | _objOffset = 0 |
||
) | const |
Definition at line 66 of file EcalDQMBinningService.cc.
References getBinningEB_(), getBinningEBMEM_(), getBinningEcal_(), getBinningEE_(), getBinningEEMEM_(), getBinningSM_(), getBinningSMMEM_(), kEB, kEBMEM, kEcal, kEE, kEEm, kEEMEM, kEEp, kSM, kSMMEM, nObjType, and nPresetBinnings.
Referenced by ecaldqm::MESetEcal::book().
{ if(_otype >= nObjType || _btype >= unsigned(nPresetBinnings)) return std::vector<AxisSpecs>(0); // you are on your own switch(_otype){ case kEB: return getBinningEB_(_btype, _isMap); case kEBMEM: return getBinningEBMEM_(_btype, _isMap); case kEE: return getBinningEE_(_btype, _isMap, 0); case kEEm: return getBinningEE_(_btype, _isMap, -1); case kEEp: return getBinningEE_(_btype, _isMap, 1); case kEEMEM: return getBinningEEMEM_(_btype, _isMap); case kSM: return getBinningSM_(_btype, _isMap, _objOffset); case kSMMEM: return getBinningSMMEM_(_btype, _isMap, _objOffset); case kEcal: return getBinningEcal_(_btype, _isMap); default: return std::vector<AxisSpecs>(0); } }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningEB_ | ( | BinningType | _btype, |
bool | _isMap | ||
) | const [private] |
Definition at line 16 of file EcalDQMBinningService2.cc.
References EcalDQMBinningService::AxisSpecs::high, ecaldqm::kCrystal, ecaldqm::kSuperCrystal, ecaldqm::kTriggerTower, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, Pi, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(!_isMap){ switch(_btype){ // case kTriggerTower: // case kSuperCrystal: // xaxis.nbins = 2448; // xaxis.low = 0.; // xaxis.high = 2448.; // xaxis.title = "iTT"; // break; case kTCC: xaxis.nbins = 36; xaxis.low = 9.; xaxis.high = 45.; xaxis.title = "iTCC"; break; case kDCC: xaxis.nbins = 36; xaxis.low = 9.; xaxis.high = 45.; break; case kProjEta: xaxis.nbins = nEBEtaBins; xaxis.low = -etaBound_; xaxis.high = etaBound_; xaxis.title = "eta"; break; case kProjPhi: xaxis.nbins = nPhiBins; xaxis.low = -TMath::Pi() / 18.; xaxis.high = TMath::Pi() * 35./18.; xaxis.title = "phi"; break; default: return axes; } axes.push_back(xaxis); } else{ switch(_btype){ case kCrystal: xaxis.nbins = 360; yaxis.nbins = 170; break; case kSuperCrystal: case kTriggerTower: xaxis.nbins = 72; yaxis.nbins = 34; break; default: return axes; } xaxis.low = 0.; xaxis.high = 360.; xaxis.title = "iphi"; yaxis.low = -85.; yaxis.high = 85.; yaxis.title = "ieta"; axes.push_back(xaxis); axes.push_back(yaxis); } return axes; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningEBMEM_ | ( | BinningType | _btype, |
bool | _isMap | ||
) | const [private] |
Definition at line 93 of file EcalDQMBinningService2.cc.
References EcalDQMBinningService::AxisSpecs::high, ecaldqm::kCrystal, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(_btype != kCrystal || !_isMap) return axes; xaxis.nbins = 18; xaxis.low = 0.; xaxis.high = 18.; xaxis.title = "channel"; yaxis.nbins = 20; yaxis.low = -10.; yaxis.high = 10.; yaxis.title = "pseudo-strip"; axes.push_back(xaxis); axes.push_back(yaxis); return axes; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningEcal_ | ( | BinningType | _btype, |
bool | _isMap | ||
) | const [private] |
Definition at line 321 of file EcalDQMBinningService2.cc.
References EcalDQMBinningService::AxisSpecs::edges, EcalDQMBinningService::AxisSpecs::high, i, ecaldqm::kCrystal, ecaldqm::kSuperCrystal, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, Pi, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(!_isMap){ switch(_btype){ case kTCC: xaxis.nbins = 108; xaxis.low = 0.; xaxis.high = 108.; xaxis.title = "iTCC"; break; case kDCC: xaxis.nbins = 54; xaxis.low = 0.; xaxis.high = 54.; break; case kProjEta: xaxis.nbins = nEBEtaBins + 2 * nEEEtaBins; xaxis.edges = new double[xaxis.nbins + 1]; for(int i(0); i <= nEEEtaBins; i++) xaxis.edges[i] = -3. + (3. - etaBound_) / nEEEtaBins * i; for(int i(1); i <= nEBEtaBins; i++) xaxis.edges[i + nEEEtaBins] = -etaBound_ + 2. * etaBound_ / nEBEtaBins * i; for(int i(1); i <= nEEEtaBins; i++) xaxis.edges[i + nEEEtaBins + nEBEtaBins] = etaBound_ + (3. - etaBound_) / nEEEtaBins * i; xaxis.title = "eta"; break; case kProjPhi: xaxis.nbins = nPhiBins; xaxis.low = -TMath::Pi() / 18.; xaxis.high = TMath::Pi() * 35./18.; xaxis.title = "phi"; break; default: return axes; } axes.push_back(xaxis); } else{ switch(_btype){ case kCrystal: xaxis.nbins = 360; yaxis.nbins = 270; break; case kSuperCrystal: xaxis.nbins = 72; yaxis.nbins = 54; break; default: return axes; } xaxis.low = 0.; xaxis.high = 360.; xaxis.title = "iphi/ix/ix+100"; yaxis.low = 0.; yaxis.high = 270.; yaxis.title = "ieta/iy"; axes.push_back(xaxis); axes.push_back(yaxis); } return axes; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningEE_ | ( | BinningType | _btype, |
bool | _isMap, | ||
int | _zside | ||
) | const [private] |
Definition at line 117 of file EcalDQMBinningService2.cc.
References EcalDQMBinningService::AxisSpecs::high, ecaldqm::kCrystal, ecaldqm::kSuperCrystal, ecaldqm::kTriggerTower, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, Pi, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(!_isMap){ switch(_btype){ // case kTriggerTower: // xaxis.nbins = _zside ? 720 : 1440; // xaxis.low = 0.; // xaxis.high = _zside ? 720. : 1440.; // xaxis.title = "iTT"; // break; // case kSuperCrystal: // xaxis.nbins = _zside ? 312 : 624; // xaxis.low = 0.; // xaxis.high = _zside ? 312. : 624.; // xaxis.title = "iSC"; // break; case kTCC: xaxis.nbins = _zside ? 36 : 72; xaxis.low = 0.; xaxis.high = _zside ? 36. : 72.; xaxis.title = "iTCC"; break; case kDCC: xaxis.nbins = _zside ? 9 : 18; xaxis.low = 0.; xaxis.high = _zside ? 9. : 18.; break; case kProjEta: if(!_zside) return axes; xaxis.nbins = nEEEtaBins; xaxis.low = _zside < 0 ? -3. : etaBound_; xaxis.high = _zside < 0 ? -etaBound_ : 3.; xaxis.title = "eta"; break; case kProjPhi: xaxis.nbins = nPhiBins; xaxis.low = -TMath::Pi() / 18.; xaxis.high = TMath::Pi() * 35./18.; xaxis.title = "phi"; break; default: return axes; } axes.push_back(xaxis); }else{ switch(_btype){ case kCrystal: case kTriggerTower: xaxis.nbins = _zside ? 100 : 200; yaxis.nbins = 100; break; case kSuperCrystal: xaxis.nbins = _zside ? 20 : 40; yaxis.nbins = 20; break; default: return axes; } xaxis.low = 0.; xaxis.high = _zside ? 100. : 200.; xaxis.title = "ix"; yaxis.low = 0.; yaxis.high = 100.; yaxis.title = "iy"; axes.push_back(xaxis); axes.push_back(yaxis); } return axes; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningEEMEM_ | ( | BinningType | _btype, |
bool | _isMap | ||
) | const [private] |
Definition at line 199 of file EcalDQMBinningService2.cc.
References EcalDQMBinningService::AxisSpecs::high, ecaldqm::kCrystal, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(_btype != kCrystal || !_isMap) return axes; xaxis.nbins = 4; xaxis.low = 0.; xaxis.high = 4.; xaxis.title = "channel"; yaxis.nbins = 20; yaxis.low = -10.; yaxis.high = 10.; yaxis.title = "pseudo-strip"; axes.push_back(xaxis); axes.push_back(yaxis); return axes; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningSM_ | ( | BinningType | _btype, |
bool | _isMap, | ||
unsigned | _offset | ||
) | const [private] |
Definition at line 223 of file EcalDQMBinningService2.cc.
References EcalElectronicsMapping::dccConstituents(), ecaldqm::getElectronicsMap(), ecaldqm::getNSuperCrystals(), EcalDQMBinningService::AxisSpecs::high, ecaldqm::kCrystal, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, ecaldqm::kEBpLow, ecaldqm::kEEm02, ecaldqm::kEEm08, ecaldqm::kEEp02, ecaldqm::kEEp08, ecaldqm::kSuperCrystal, ecaldqm::kTriggerTower, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ const bool isBarrel(_offset >= kEBmLow && _offset <= kEBpHigh); std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(!_isMap){ switch(_btype){ case kCrystal: xaxis.nbins = isBarrel ? 1700 : getElectronicsMap()->dccConstituents(_offset + 1).size(); xaxis.low = 0.; xaxis.high = xaxis.nbins; xaxis.title = "channel"; break; case kTriggerTower: xaxis.nbins = isBarrel ? 68 : 80; xaxis.low = 0.; xaxis.high = xaxis.nbins; xaxis.title = "tower"; break; case kSuperCrystal: xaxis.nbins = isBarrel ? 68 : getNSuperCrystals(_offset + 1); xaxis.low = 0.; xaxis.high = xaxis.nbins; xaxis.title = "tower"; break; default: return axes; } axes.push_back(xaxis); }else{ int nEEX(nEESMX); if(_offset == kEEm02 || _offset == kEEm08 || _offset == kEEp02 || _offset == kEEp08) nEEX = nEESMXExt; switch(_btype){ case kCrystal: xaxis.nbins = isBarrel ? nEBSMEta : nEEX; yaxis.nbins = isBarrel ? nEBSMPhi : nEESMY; break; case kTriggerTower: xaxis.nbins = isBarrel ? nEBSMEta / 5 : nEEX; yaxis.nbins = isBarrel ? nEBSMPhi / 5 : nEESMY; break; case kSuperCrystal: xaxis.nbins = isBarrel ? nEBSMEta / 5 : nEEX / 5; yaxis.nbins = isBarrel ? nEBSMPhi / 5 : nEESMY / 5; break; default: return axes; } xaxis.low = xlow(_offset); xaxis.high = xaxis.low + (isBarrel ? nEBSMEta : nEEX); xaxis.title = isBarrel ? (_offset < kEBpLow ? "-ieta" : "ieta") : "ix"; yaxis.low = ylow(_offset); yaxis.high = yaxis.low + (isBarrel ? nEBSMPhi : nEESMY); yaxis.title = isBarrel ? "iphi" : "iy"; axes.push_back(xaxis); axes.push_back(yaxis); } return axes; }
std::vector< EcalDQMBinningService::AxisSpecs > EcalDQMBinningService::getBinningSMMEM_ | ( | BinningType | _btype, |
bool | _isMap, | ||
unsigned | _idcc | ||
) | const [private] |
Definition at line 294 of file EcalDQMBinningService2.cc.
References ecaldqm::dccNoMEM, EcalDQMBinningService::AxisSpecs::high, ecaldqm::kCrystal, ecaldqm::kEBpLow, EcalDQMBinningService::AxisSpecs::low, EcalDQMBinningService::AxisSpecs::nbins, and EcalDQMBinningService::AxisSpecs::title.
Referenced by getBinning().
{ std::vector<AxisSpecs> axes(0); AxisSpecs xaxis, yaxis; if(dccNoMEM.find(_idcc) != dccNoMEM.end()) return axes; if(_btype != kCrystal) return axes; xaxis.nbins = 10; xaxis.low = _idcc >= kEBpLow ? 0. : -10.; xaxis.high = _idcc >= kEBpLow ? 10. : 0.; xaxis.title = "pseudo-strip"; axes.push_back(xaxis); if(_isMap){ yaxis.nbins = 1; yaxis.low = 0.; yaxis.high = 5.; yaxis.title = "channel"; axes.push_back(yaxis); } return axes; }
uint32_t EcalDQMBinningService::idFromName | ( | std::string const & | _name | ) | const |
Definition at line 640 of file EcalDQMBinningService.cc.
References ecaldqm::kEBmLow, ecaldqm::kEEmLow, ecaldqm::kEEpLow, mergeVDriftHistosByStation::name, nDCC, evf::evtn::offset(), EcalElectronicsId::rawId(), and EcalTriggerElectronicsId::rawId().
Referenced by ecaldqm::MESetChannel::checkDirectory().
{ TString name(_name); TPRegexp re("(EB|EE)([+-][0-9][0-9])(?: TCC ([0-9]+)| DCC ([0-9]+) (CCU|TCC) ([0-9]+)(?: (?:TT|strip) ([0-9]+)(?: xtal ([0-9]+)|)|)|)"); // 1 2 3 4 5 6 7 8 uint32_t rawId(0); TObjArray* matches(re.MatchS(name)); if(matches->GetEntries() == 0) return 0; else if(matches->GetEntries() == 3){ TString subdet(static_cast<TObjString*>(matches->At(1))->GetString()); if(subdet == "EB"){ int dccid(static_cast<TObjString*>(matches->At(2))->GetString().Atoi()); unsigned offset(0); if(dccid < 0){ dccid *= -1; offset = kEEmLow; } else offset = kEEpLow; rawId = (dccid + 2) % 9 + 1 + offset; } else{ int dccid(static_cast<TObjString*>(matches->At(2))->GetString().Atoi()); if(dccid < 0) dccid *= -1; else dccid += 18; rawId = kEBmLow + dccid; } } else if(matches->GetEntries() == 4) rawId = static_cast<TObjString*>(matches->At(3))->GetString().Atoi() + nDCC; else{ TString subtype(static_cast<TObjString*>(matches->At(5))->GetString()); if(subtype == "TCC"){ int tccid(static_cast<TObjString*>(matches->At(6))->GetString().Atoi()); int ttid(static_cast<TObjString*>(matches->At(7))->GetString().Atoi()); rawId = EcalTriggerElectronicsId(tccid, ttid, 1, 1).rawId(); } else{ int dccid(static_cast<TObjString*>(matches->At(4))->GetString().Atoi()); int towerid(static_cast<TObjString*>(matches->At(6))->GetString().Atoi()); if(matches->GetEntries() == 7) rawId = EcalElectronicsId(dccid, towerid, 1, 1).rawId(); else{ int stripid(static_cast<TObjString*>(matches->At(7))->GetString().Atoi()); int xtalid(static_cast<TObjString*>(matches->At(8))->GetString().Atoi()); rawId = EcalElectronicsId(dccid, towerid, stripid, xtalid).rawId(); } } } delete matches; return rawId; }
EcalDQMBinningService::ObjectType EcalDQMBinningService::objectFromOffset | ( | ObjectType | _otype, |
unsigned | _offset | ||
) | const |
Definition at line 476 of file EcalDQMBinningService.cc.
References kEB, kEBMEM, kEcal2P, kEcal3P, kEcalMEM2P, kEE, kEEm, kEEMEM, kEEp, and nObjType.
Referenced by ecaldqm::MESetEcal::book(), findBins(), ecaldqm::MESetEcal::generateNames(), and ecaldqm::MESetEcal::reset().
{ if(_otype == kEcal3P) { switch(_offset){ case 0: return kEEm; case 1: return kEB; case 2: return kEEp; default: return nObjType; } } else if(_otype == kEcal2P){ switch(_offset){ case 0: return kEE; case 1: return kEB; default: return nObjType; } } else if(_otype == kEcalMEM2P){ switch(_offset){ case 0: return kEEMEM; case 1: return kEBMEM; default: return nObjType; } } else return _otype; }
void EcalDQMBinningService::postBeginRun | ( | const edm::Run & | , |
const edm::EventSetup & | _es | ||
) |
Definition at line 44 of file EcalDQMBinningService.cc.
References Exception, geometry_, edm::EventSetup::get(), initialized_, edm::ESHandle< T >::product(), ecaldqm::setElectronicsMap(), and ecaldqm::setTrigTowerMap().
Referenced by EcalDQMBinningService().
{ // set up ecaldqm::electronicsMap in EcalDQMCommonUtils edm::ESHandle<EcalElectronicsMapping> elecMapHandle; _es.get<EcalMappingRcd>().get(elecMapHandle); setElectronicsMap(elecMapHandle.product()); // set up ecaldqm::electronicsMap in EcalDQMCommonUtils edm::ESHandle<EcalTrigTowerConstituentsMap> ttMapHandle; _es.get<IdealGeometryRecord>().get(ttMapHandle); setTrigTowerMap(ttMapHandle.product()); edm::ESHandle<CaloGeometry> geomHndl; _es.get<CaloGeometryRecord>().get(geomHndl); geometry_ = geomHndl.product(); if(!geometry_) throw cms::Exception("EventSetup") << "CaloGeometry invalid"; initialized_ = true; }
int EcalDQMBinningService::smOffsetBins | ( | ObjectType | _otype, |
BinningType | _btype, | ||
unsigned | _offset | ||
) | const |
Definition at line 505 of file EcalDQMBinningService.cc.
References combineCards::bins, kCrystal, ecaldqm::kEBmLow, ecaldqm::kEEm02, ecaldqm::kEEm08, ecaldqm::kEEmLow, ecaldqm::kEEp02, ecaldqm::kEEp08, ecaldqm::kEEpLow, kSM, kSMMEM, kSuperCrystal, kTriggerTower, nEBSMBins, nEESMBins, nEESMBinsExt, and evf::evtn::offset().
Referenced by findBins(), and ecaldqm::MESetEcal::reset().
{ if(!_offset) return 0; switch(_otype) { case kSM : { int bins(0); int offset(_offset); if(offset > kEEpLow){ int ext(0); if(offset > kEEp02) ext += 1; if(offset > kEEp08) ext += 1; int offBins(nEESMBins * (offset - kEEpLow) + (nEESMBinsExt - nEESMBins) * ext); switch(_btype){ case kCrystal: case kTriggerTower: bins += offBins; break; case kSuperCrystal: bins += offBins / 25; break; default: break; } offset = kEEpLow; } if(offset > kEBmLow){ int offBins(nEBSMBins * (offset - kEBmLow)); switch(_btype){ case kCrystal: bins += offBins; break; case kTriggerTower: case kSuperCrystal: bins += offBins / 25; break; default: break; } offset = kEBmLow; } if(offset > kEEmLow){ int ext(0); if(offset > kEEm02) ext += 1; if(offset > kEEm08) ext += 1; int offBins(nEESMBins * (offset - kEEmLow) + (nEESMBinsExt - nEESMBins) * ext); switch(_btype){ case kCrystal: case kTriggerTower: bins += offBins; break; case kSuperCrystal: bins += offBins / 25; break; default: break; } } return bins; } case kSMMEM : { return _offset * 10; } default : break; } return 0; }
int EcalDQMBinningService::xlow | ( | int | _iSM | ) | const |
Definition at line 96 of file EcalDQMBinningService.cc.
References ecaldqm::kEBmLow, ecaldqm::kEBpHigh, ecaldqm::kEEm01, ecaldqm::kEEm02, ecaldqm::kEEm03, ecaldqm::kEEm04, ecaldqm::kEEm05, ecaldqm::kEEm06, ecaldqm::kEEm07, ecaldqm::kEEm08, ecaldqm::kEEm09, ecaldqm::kEEp01, ecaldqm::kEEp02, ecaldqm::kEEp03, ecaldqm::kEEp04, ecaldqm::kEEp05, ecaldqm::kEEp06, ecaldqm::kEEp07, ecaldqm::kEEp08, and ecaldqm::kEEp09.
{ switch(_iSM){ case kEEm01: case kEEp01: return 15; case kEEm02: case kEEp02: return 0; case kEEm03: case kEEp03: return 0; case kEEm04: case kEEp04: return 5; case kEEm05: case kEEp05: return 30; case kEEm06: case kEEp06: return 55; case kEEm07: case kEEp07: return 60; case kEEm08: case kEEp08: return 55; case kEEm09: case kEEp09: return 45; default: break; } if(_iSM >= kEBmLow && _iSM <= kEBpHigh) return 0; return 0; }
int EcalDQMBinningService::ylow | ( | int | _iSM | ) | const |
Definition at line 117 of file EcalDQMBinningService.cc.
References ecaldqm::kEBmHigh, ecaldqm::kEBmLow, ecaldqm::kEBpHigh, ecaldqm::kEBpLow, ecaldqm::kEEm01, ecaldqm::kEEm02, ecaldqm::kEEm03, ecaldqm::kEEm04, ecaldqm::kEEm05, ecaldqm::kEEm06, ecaldqm::kEEm07, ecaldqm::kEEm08, ecaldqm::kEEm09, ecaldqm::kEEp01, ecaldqm::kEEp02, ecaldqm::kEEp03, ecaldqm::kEEp04, ecaldqm::kEEp05, ecaldqm::kEEp06, ecaldqm::kEEp07, ecaldqm::kEEp08, and ecaldqm::kEEp09.
{ switch(_iSM){ case kEEm01: case kEEp01: case kEEm09: case kEEp09: return 60; case kEEm02: case kEEp02: case kEEm08: case kEEp08: return 50; case kEEm03: case kEEp03: case kEEm07: case kEEp07: return 25; case kEEm04: case kEEp04: case kEEm06: case kEEp06: return 5; case kEEm05: case kEEp05: return 0; default: break; } if(_iSM >= kEBmLow && _iSM <= kEBmHigh) return ((_iSM - kEBmLow) % 18) * 20; if(_iSM >= kEBpLow && _iSM <= kEBpHigh) return (-1 - ((_iSM - kEBpLow) % 18)) * 20; return 0; }
std::vector<int> EcalDQMBinningService::binMaps_[nPlotType][nPresetBinnings] [mutable, private] |
Definition at line 173 of file EcalDQMBinningService.h.
Referenced by getBinMap().
std::pair<unsigned, std::vector<int> > EcalDQMBinningService::cache_ [mutable, private] |
Definition at line 186 of file EcalDQMBinningService.h.
Referenced by findBins(), and findOffset().
BinningType EcalDQMBinningService::cacheBtype_ [mutable, private] |
Definition at line 185 of file EcalDQMBinningService.h.
Referenced by findBins().
uint32_t EcalDQMBinningService::cacheId_ [mutable, private] |
Definition at line 183 of file EcalDQMBinningService.h.
Referenced by findBins(), and findOffset().
ObjectType EcalDQMBinningService::cacheOtype_ [mutable, private] |
Definition at line 184 of file EcalDQMBinningService.h.
Referenced by findBins(), and findOffset().
const double EcalDQMBinningService::etaBound_ [private] |
Definition at line 188 of file EcalDQMBinningService.h.
const CaloGeometry* EcalDQMBinningService::geometry_ [private] |
Definition at line 190 of file EcalDQMBinningService.h.
Referenced by postBeginRun().
bool EcalDQMBinningService::initialized_ [private] |
Definition at line 192 of file EcalDQMBinningService.h.
Referenced by postBeginRun().
int EcalDQMBinningService::verbosity_ [private] |
Definition at line 194 of file EcalDQMBinningService.h.
Referenced by getBinMap().