CMS 3D CMS Logo

List of all members | Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes
GEMDQMBase Class Reference

#include <GEMDQMBase.h>

Inheritance diagram for GEMDQMBase:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator > GEMDAQStatusSource GEMDigiSource GEMRecHitSource

Classes

class  BookingHelper
 
class  MEMapInfT
 
class  MEStationInfo
 

Public Types

enum  {
  GEMDQM_RUNTYPE_ONLINE, GEMDQM_RUNTYPE_OFFLINE, GEMDQM_RUNTYPE_RELVAL, GEMDQM_RUNTYPE_ALLPLOTS,
  GEMDQM_RUNTYPE_NONE = -1
}
 
typedef MEMapInfT< MEMap2Ids, ME2IdsKeyMEMap2Inf
 
typedef MEMapInfT< MEMap3Ids, ME3IdsKeyMEMap3Inf
 
typedef MEMapInfT< MEMap4Ids, ME4IdsKeyMEMap4Inf
 
- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Public Member Functions

 GEMDQMBase (const edm::ParameterSet &cfg)
 
int readGeometryPhiInfoChamber (const GEMStation *station, MEStationInfo &stationInfo)
 
int readGeometryRadiusInfoChamber (const GEMStation *station, MEStationInfo &stationInfo)
 
 ~GEMDQMBase () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
virtual void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Public Attributes

std::string log_category_
 
Int_t nRunType_
 

Protected Member Functions

template<typename T >
bool checkRefs (const std::vector< T *> &)
 
dqm::impl::MonitorElementCreateSummaryHist (DQMStore::IBooker &ibooker, TString strName)
 
int GenerateMEPerChamber (DQMStore::IBooker &ibooker)
 
int getDetOccXBin (const int, const int, const int)
 
int getIEtaFromVFAT (const int station, const int vfat)
 
int getIEtaFromVFATGE0 (const int vfat)
 
int getIEtaFromVFATGE11 (const int vfat)
 
int getIEtaFromVFATGE21 (const int vfat)
 
int getMaxVFAT (const int)
 
std::string getNameDirLayer (ME3IdsKey key3)
 
int getNumEtaPartitions (const GEMStation *)
 
int getVFATNumber (const int, const int, const int)
 
int getVFATNumberByDigi (const int, const int, const int)
 
int getVFATNumberGE11 (const int, const int, const int)
 
int initGeometry (edm::EventSetup const &iSetup)
 
ME2IdsKey key3Tokey2 (ME3IdsKey key)
 
ME3IdsKey key4Tokey3 (ME4IdsKey key)
 
int keyToChamber (ME4IdsKey key)
 
int keyToIEta (ME3IdsKey key)
 
int keyToIEta (ME4IdsKey key)
 
int keyToLayer (ME3IdsKey key)
 
int keyToLayer (ME4IdsKey key)
 
int keyToRegion (ME2IdsKey key)
 
int keyToRegion (ME3IdsKey key)
 
int keyToRegion (ME4IdsKey key)
 
int keyToStation (ME2IdsKey key)
 
int keyToStation (ME3IdsKey key)
 
int keyToStation (ME4IdsKey key)
 
int loadChambers ()
 
virtual int ProcessWithMEMap2 (BookingHelper &bh, ME2IdsKey key)
 
virtual int ProcessWithMEMap2AbsReWithEta (BookingHelper &bh, ME3IdsKey key)
 
virtual int ProcessWithMEMap2WithEta (BookingHelper &bh, ME3IdsKey key)
 
virtual int ProcessWithMEMap3 (BookingHelper &bh, ME3IdsKey key)
 
virtual int ProcessWithMEMap3WithChamber (BookingHelper &bh, ME4IdsKey key)
 
virtual int ProcessWithMEMap4 (BookingHelper &bh, ME4IdsKey key)
 
Float_t restrictAngle (const Float_t fTheta, const Float_t fStart)
 
int SortingLayers (std::vector< ME3IdsKey > &listLayers)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 

Protected Attributes

const GEMGeometryGEMGeometry_
 
edm::ESGetToken< GEMGeometry, MuonGeometryRecordgeomToken_
 
std::vector< GEMDetIdlistChamberId_
 
std::map< GEMDetId, std::vector< const GEMEtaPartition * > > mapEtaPartition_
 
std::map< ME3IdsKey, MEStationInfomapStationInfo_
 
std::map< ME3IdsKey, int > mapStationToIdx_
 
std::map< ME3IdsKey, bool > MEMap2AbsReWithEtaCheck_
 
std::map< ME2IdsKey, bool > MEMap2Check_
 
std::map< ME3IdsKey, bool > MEMap2WithEtaCheck_
 
std::map< ME3IdsKey, bool > MEMap3Check_
 
std::map< ME4IdsKey, bool > MEMap3WithChCheck_
 
std::map< ME4IdsKey, bool > MEMap4Check_
 
int nMaxNumCh_
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Additional Inherited Members

- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 

Detailed Description

Definition at line 29 of file GEMDQMBase.h.

Member Typedef Documentation

◆ MEMap2Inf

Definition at line 458 of file GEMDQMBase.h.

◆ MEMap3Inf

Definition at line 459 of file GEMDQMBase.h.

◆ MEMap4Inf

Definition at line 460 of file GEMDQMBase.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
GEMDQM_RUNTYPE_ONLINE 
GEMDQM_RUNTYPE_OFFLINE 
GEMDQM_RUNTYPE_RELVAL 
GEMDQM_RUNTYPE_ALLPLOTS 
GEMDQM_RUNTYPE_NONE 

Definition at line 514 of file GEMDQMBase.h.

Constructor & Destructor Documentation

◆ GEMDQMBase()

GEMDQMBase::GEMDQMBase ( const edm::ParameterSet cfg)
explicit

Definition at line 7 of file GEMDQMBase.cc.

References edm::BeginRun, looper::cfg, GEMDQM_RUNTYPE_ALLPLOTS, GEMDQM_RUNTYPE_OFFLINE, GEMDQM_RUNTYPE_ONLINE, GEMDQM_RUNTYPE_RELVAL, log_category_, nRunType_, and AlCaHLTBitMon_QueryRunRegistry::string.

7  : geomToken_(esConsumes<edm::Transition::BeginRun>()) {
8  std::string strRunType = cfg.getUntrackedParameter<std::string>("runType");
9 
11 
12  if (strRunType == "online") {
14  } else if (strRunType == "offline") {
16  } else if (strRunType == "relval") {
18  } else if (strRunType == "allplots") {
20  } else {
21  edm::LogError(log_category_) << "+++ Error : GEM geometry is unavailable on event loop. +++\n";
22  }
23 
24  log_category_ = cfg.getUntrackedParameter<std::string>("logCategory");
25 }
Int_t nRunType_
Definition: GEMDQMBase.h:522
Log< level::Error, false > LogError
std::string log_category_
Definition: GEMDQMBase.h:524
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
Definition: GEMDQMBase.h:580

◆ ~GEMDQMBase()

GEMDQMBase::~GEMDQMBase ( )
inlineoverride

Definition at line 512 of file GEMDQMBase.h.

512 {};

Member Function Documentation

◆ checkRefs()

template<typename T >
bool GEMDQMBase::checkRefs ( const std::vector< T *> &  refs)
inlineprotected

Definition at line 599 of file GEMDQMBase.h.

Referenced by getNumEtaPartitions().

599  {
600  if (refs.empty())
601  return false;
602  if (refs.front() == nullptr)
603  return false;
604  return true;
605 }

◆ CreateSummaryHist()

dqm::impl::MonitorElement * GEMDQMBase::CreateSummaryHist ( DQMStore::IBooker ibooker,
TString  strName 
)
protected

Definition at line 144 of file GEMDQMBase.cc.

References dqm::implementation::IBooker::book2D(), GEMUtils::getSuffixName(), mps_fire::i, crabWrapper::key, keyToLayer(), keyToRegion(), keyToStation(), label, mapStationInfo_, mapStationToIdx_, nMaxNumCh_, HLT_2022v15_cff::region, dqm::impl::MonitorElement::setXTitle(), and SortingLayers().

Referenced by GEMDAQStatusSource::bookHistograms().

144  {
145  std::vector<ME3IdsKey> listLayers;
146  for (auto const& [key, stationInfo] : mapStationInfo_)
147  listLayers.push_back(key);
148  SortingLayers(listLayers);
149  for (Int_t i = 0; i < (Int_t)listLayers.size(); i++)
150  mapStationToIdx_[listLayers[i]] = i + 1;
151 
152  auto h2Res =
153  ibooker.book2D(strName, "", nMaxNumCh_, 0.5, nMaxNumCh_ + 0.5, listLayers.size(), 0.5, listLayers.size() + 0.5);
154  h2Res->setXTitle("Chamber");
155  h2Res->setYTitle("Layer");
156 
157  if (h2Res == nullptr)
158  return nullptr;
159 
160  for (Int_t i = 1; i <= nMaxNumCh_; i++)
161  h2Res->setBinLabel(i, Form("%i", i), 1);
162  for (Int_t i = 1; i <= (Int_t)listLayers.size(); i++) {
163  auto key = listLayers[i - 1];
164  auto strInfo = GEMUtils::getSuffixName(key); // NOTE: It starts with '_'
165  auto region = keyToRegion(key);
166  auto label =
167  Form("GE%+i1-%cL%i;%s", region * keyToStation(key), (region > 0 ? 'P' : 'M'), keyToLayer(key), strInfo.Data());
168  h2Res->setBinLabel(i, label, 2);
169  Int_t nNumCh = mapStationInfo_[key].nNumChambers_;
170  h2Res->setBinContent(0, i, nNumCh);
171  }
172 
173  return h2Res;
174 }
TString getSuffixName(Int_t region_id)
std::map< ME3IdsKey, MEStationInfo > mapStationInfo_
Definition: GEMDQMBase.h:594
int keyToRegion(ME2IdsKey key)
Definition: GEMDQMBase.h:538
std::map< ME3IdsKey, int > mapStationToIdx_
Definition: GEMDQMBase.h:593
int keyToLayer(ME3IdsKey key)
Definition: GEMDQMBase.h:544
char const * label
virtual void setXTitle(std::string const &title)
int keyToStation(ME2IdsKey key)
Definition: GEMDQMBase.h:541
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
int SortingLayers(std::vector< ME3IdsKey > &listLayers)
Definition: GEMDQMBase.cc:125
int nMaxNumCh_
Definition: GEMDQMBase.h:592

◆ GenerateMEPerChamber()

int GEMDQMBase::GenerateMEPerChamber ( DQMStore::IBooker ibooker)
protected

Definition at line 176 of file GEMDQMBase.cc.

References funct::abs(), GEMUtils::getSuffixName(), GEMUtils::getSuffixTitle(), l1tTowerCalibrationProducer_cfi::iEta, GEMDetId::ieta(), listChamberId_, mapEtaPartition_, MEMap2AbsReWithEtaCheck_, MEMap2Check_, MEMap2WithEtaCheck_, MEMap3Check_, MEMap3WithChCheck_, MEMap4Check_, ProcessWithMEMap2(), ProcessWithMEMap2AbsReWithEta(), ProcessWithMEMap2WithEta(), ProcessWithMEMap3(), ProcessWithMEMap3WithChamber(), and ProcessWithMEMap4().

Referenced by GEMRecHitSource::bookHistograms(), GEMDigiSource::bookHistograms(), and GEMDAQStatusSource::bookHistograms().

176  {
177  MEMap2Check_.clear();
178  MEMap2WithEtaCheck_.clear();
179  MEMap2AbsReWithEtaCheck_.clear();
180  MEMap3Check_.clear();
181  MEMap3WithChCheck_.clear();
182  MEMap4Check_.clear();
183  for (auto gid : listChamberId_) {
184  ME2IdsKey key2{gid.region(), gid.station()};
185  ME3IdsKey key3{gid.region(), gid.station(), gid.layer()};
186  ME4IdsKey key3WithChamber{gid.region(), gid.station(), gid.layer(), gid.chamber()};
187  if (!MEMap2Check_[key2]) {
188  auto strSuffixName = GEMUtils::getSuffixName(key2);
189  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2);
190  BookingHelper bh2(ibooker, strSuffixName, strSuffixTitle);
191  ProcessWithMEMap2(bh2, key2);
192  MEMap2Check_[key2] = true;
193  }
194  if (!MEMap3Check_[key3]) {
195  auto strSuffixName = GEMUtils::getSuffixName(key3);
196  auto strSuffixTitle = GEMUtils::getSuffixTitle(key3);
197  BookingHelper bh3(ibooker, strSuffixName, strSuffixTitle);
198  ProcessWithMEMap3(bh3, key3);
199  MEMap3Check_[key3] = true;
200  }
201  if (!MEMap3WithChCheck_[key3WithChamber]) {
202  Int_t nCh = gid.chamber();
203  Int_t nLa = gid.layer();
204  char cLS = (nCh % 2 == 0 ? 'L' : 'S'); // FIXME: Is it general enough?
205  auto strSuffixName = GEMUtils::getSuffixName(key2) + Form("-%02iL%i-%c", nCh, nLa, cLS);
206  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + Form("-%02iL%i-%c", nCh, nLa, cLS);
207  BookingHelper bh3Ch(ibooker, strSuffixName, strSuffixTitle);
208  ProcessWithMEMap3WithChamber(bh3Ch, key3WithChamber);
209  MEMap3WithChCheck_[key3WithChamber] = true;
210  }
211  for (auto iEta : mapEtaPartition_[gid]) {
212  GEMDetId eId = iEta->id();
213  ME4IdsKey key4{gid.region(), gid.station(), gid.layer(), eId.ieta()};
214  ME3IdsKey key2WithEta{gid.region(), gid.station(), eId.ieta()};
215  ME3IdsKey key2AbsReWithEta{std::abs(gid.region()), gid.station(), eId.ieta()};
216  if (!MEMap4Check_[key4]) {
217  auto strSuffixName = GEMUtils::getSuffixName(key3) + Form("-E%02i", eId.ieta());
218  auto strSuffixTitle = GEMUtils::getSuffixTitle(key3) + Form("-E%02i", eId.ieta());
219  BookingHelper bh4(ibooker, strSuffixName, strSuffixTitle);
220  ProcessWithMEMap4(bh4, key4);
221  MEMap4Check_[key4] = true;
222  }
223  if (!MEMap2WithEtaCheck_[key2WithEta]) {
224  auto strSuffixName = GEMUtils::getSuffixName(key2) + Form("-E%02i", eId.ieta());
225  auto strSuffixTitle = GEMUtils::getSuffixTitle(key2) + Form("-E%02i", eId.ieta());
226  BookingHelper bh3(ibooker, strSuffixName, strSuffixTitle);
227  ProcessWithMEMap2WithEta(bh3, key2WithEta);
228  MEMap2WithEtaCheck_[key2WithEta] = true;
229  }
230  if (!MEMap2AbsReWithEtaCheck_[key2AbsReWithEta]) {
231  auto strSuffixName = Form("_GE%d1-E%02i", gid.station(), eId.ieta());
232  auto strSuffixTitle = Form(" GE%d1-E%02i", gid.station(), eId.ieta());
233  BookingHelper bh3(ibooker, strSuffixName, strSuffixTitle);
234  ProcessWithMEMap2AbsReWithEta(bh3, key2AbsReWithEta);
235  MEMap2AbsReWithEtaCheck_[key2AbsReWithEta] = true;
236  }
237  }
238  }
239  return 0;
240 }
virtual int ProcessWithMEMap4(BookingHelper &bh, ME4IdsKey key)
Definition: GEMDQMBase.h:535
TString getSuffixName(Int_t region_id)
std::vector< GEMDetId > listChamberId_
Definition: GEMDQMBase.h:582
virtual int ProcessWithMEMap2AbsReWithEta(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:533
std::tuple< Int_t, Int_t, Int_t, Int_t > ME4IdsKey
TString getSuffixTitle(Int_t region_id)
std::map< ME3IdsKey, bool > MEMap2AbsReWithEtaCheck_
Definition: GEMDQMBase.h:587
std::map< ME2IdsKey, bool > MEMap2Check_
Definition: GEMDQMBase.h:585
virtual int ProcessWithMEMap3(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:534
std::map< ME3IdsKey, bool > MEMap3Check_
Definition: GEMDQMBase.h:588
virtual int ProcessWithMEMap3WithChamber(BookingHelper &bh, ME4IdsKey key)
Definition: GEMDQMBase.h:536
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::map< ME4IdsKey, bool > MEMap4Check_
Definition: GEMDQMBase.h:590
constexpr int ieta() const
Definition: GEMDetId.h:199
virtual int ProcessWithMEMap2WithEta(BookingHelper &bh, ME3IdsKey key)
Definition: GEMDQMBase.h:532
std::map< ME3IdsKey, bool > MEMap2WithEtaCheck_
Definition: GEMDQMBase.h:586
std::map< GEMDetId, std::vector< const GEMEtaPartition * > > mapEtaPartition_
Definition: GEMDQMBase.h:583
std::tuple< Int_t, Int_t > ME2IdsKey
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey
std::map< ME4IdsKey, bool > MEMap3WithChCheck_
Definition: GEMDQMBase.h:589
virtual int ProcessWithMEMap2(BookingHelper &bh, ME2IdsKey key)
Definition: GEMDQMBase.h:531

◆ getDetOccXBin()

int GEMDQMBase::getDetOccXBin ( const int  chamber,
const int  layer,
const int  n_chambers 
)
inlineprotected

Definition at line 656 of file GEMDQMBase.h.

References relativeConstraints::chamber, and phase1PixelTopology::layer.

656  {
657  return n_chambers * (chamber - 1) + layer;
658 }
constexpr std::array< uint8_t, layerIndexSize > layer

◆ getIEtaFromVFAT()

int GEMDQMBase::getIEtaFromVFAT ( const int  station,
const int  vfat 
)
inlineprotected

Definition at line 634 of file GEMDQMBase.h.

References getIEtaFromVFATGE0(), getIEtaFromVFATGE11(), getIEtaFromVFATGE21(), and relativeConstraints::station.

Referenced by GEMDQMBase::MEMapInfT< M, K >::SetLabelForVFATs().

634  {
635  if (station == 0)
636  return getIEtaFromVFATGE0(vfat);
637  if (station == 1)
638  return getIEtaFromVFATGE11(vfat);
639  if (station == 2)
640  return getIEtaFromVFATGE21(vfat);
641  return getIEtaFromVFATGE11(vfat); // FIXME: What about GE21 and GE0?
642 }
int getIEtaFromVFATGE0(const int vfat)
Definition: GEMDQMBase.h:644
int getIEtaFromVFATGE21(const int vfat)
Definition: GEMDQMBase.h:652
int getIEtaFromVFATGE11(const int vfat)
Definition: GEMDQMBase.h:648

◆ getIEtaFromVFATGE0()

int GEMDQMBase::getIEtaFromVFATGE0 ( const int  vfat)
inlineprotected

Definition at line 644 of file GEMDQMBase.h.

References GEMeMap::maxiEtaIdGE0_.

Referenced by getIEtaFromVFAT().

644  {
646 }
static const int maxiEtaIdGE0_
Definition: GEMeMap.h:69

◆ getIEtaFromVFATGE11()

int GEMDQMBase::getIEtaFromVFATGE11 ( const int  vfat)
inlineprotected

Definition at line 648 of file GEMDQMBase.h.

References GEMeMap::maxiEtaIdGE11_.

Referenced by getIEtaFromVFAT().

648  {
650 }
static const int maxiEtaIdGE11_
Definition: GEMeMap.h:70

◆ getIEtaFromVFATGE21()

int GEMDQMBase::getIEtaFromVFATGE21 ( const int  vfat)
inlineprotected

Definition at line 652 of file GEMDQMBase.h.

References GEMeMap::maxiEtaIdGE21_.

Referenced by getIEtaFromVFAT().

652  {
654 }
static const int maxiEtaIdGE21_
Definition: GEMeMap.h:71

◆ getMaxVFAT()

int GEMDQMBase::getMaxVFAT ( const int  station)
inlineprotected

Definition at line 608 of file GEMDQMBase.h.

References GEMeMap::maxVFatGE0_, GEMeMap::maxVFatGE11_, GEMeMap::maxVFatGE21_, and relativeConstraints::station.

Referenced by loadChambers().

608  {
609  if (station == 0)
610  return GEMeMap::maxVFatGE0_;
611  if (station == 1)
612  return GEMeMap::maxVFatGE11_;
613  else if (station == 2)
614  return GEMeMap::maxVFatGE21_;
615  else
616  return -1;
617 }
static const int maxVFatGE0_
Definition: GEMeMap.h:66
static const int maxVFatGE21_
Definition: GEMeMap.h:68
static const int maxVFatGE11_
Definition: GEMeMap.h:67

◆ getNameDirLayer()

std::string GEMDQMBase::getNameDirLayer ( ME3IdsKey  key3)
inlineprotected

Definition at line 666 of file GEMDQMBase.h.

References keyToLayer(), keyToRegion(), keyToStation(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by GEMRecHitSource::ProcessWithMEMap3WithChamber(), GEMDigiSource::ProcessWithMEMap3WithChamber(), and GEMDAQStatusSource::ProcessWithMEMap3WithChamber().

666  {
667  auto nStation = keyToStation(key3);
668  char cRegion = (keyToRegion(key3) > 0 ? 'P' : 'M');
669  auto nLayer = keyToLayer(key3);
670  return std::string(Form("GE%i1-%c-L%i", nStation, cRegion, nLayer));
671 }
int keyToRegion(ME2IdsKey key)
Definition: GEMDQMBase.h:538
int keyToLayer(ME3IdsKey key)
Definition: GEMDQMBase.h:544
int keyToStation(ME2IdsKey key)
Definition: GEMDQMBase.h:541

◆ getNumEtaPartitions()

int GEMDQMBase::getNumEtaPartitions ( const GEMStation station)
protected

Definition at line 40 of file GEMDQMBase.cc.

References chambers, checkRefs(), log_category_, and relativeConstraints::station.

Referenced by loadChambers().

40  {
41  const auto&& superchambers = station->superChambers();
42  if (not checkRefs(superchambers)) {
43  edm::LogError(log_category_) << "failed to get a valid vector of GEMSuperChamber ptrs" << std::endl;
44  return 0;
45  }
46 
47  const auto& chambers = superchambers.front()->chambers();
48  if (not checkRefs(chambers)) {
49  edm::LogError(log_category_) << "failed to get a valid vector of GEMChamber ptrs" << std::endl;
50  return 0;
51  }
52 
53  return chambers.front()->nEtaPartitions();
54 }
bool checkRefs(const std::vector< T *> &)
Definition: GEMDQMBase.h:599
Log< level::Error, false > LogError
std::string log_category_
Definition: GEMDQMBase.h:524
static char chambers[264][20]
Definition: ReadPGInfo.cc:243

◆ getVFATNumber()

int GEMDQMBase::getVFATNumber ( const int  station,
const int  ieta,
const int  vfat_phi 
)
inlineprotected

Definition at line 619 of file GEMDQMBase.h.

References getVFATNumberGE11(), LEDCalibrationChannels::ieta, and relativeConstraints::station.

Referenced by getVFATNumberByDigi().

619  {
620  if (station == 1)
621  return getVFATNumberGE11(station, ieta, vfat_phi);
622  return getVFATNumberGE11(station, ieta, vfat_phi); // FIXME: What about GE21 and GE0?
623 }
int getVFATNumberGE11(const int, const int, const int)
Definition: GEMDQMBase.h:625

◆ getVFATNumberByDigi()

int GEMDQMBase::getVFATNumberByDigi ( const int  station,
const int  ieta,
const int  digi 
)
inlineprotected

Definition at line 629 of file GEMDQMBase.h.

References getVFATNumber(), LEDCalibrationChannels::ieta, GEMeMap::maxChan_, and relativeConstraints::station.

Referenced by GEMDigiSource::analyze().

629  {
630  const int vfat_phi = digi / GEMeMap::maxChan_;
631  return getVFATNumber(station, ieta, vfat_phi);
632 }
int getVFATNumber(const int, const int, const int)
Definition: GEMDQMBase.h:619
static const int maxChan_
Definition: GEMeMap.h:72

◆ getVFATNumberGE11()

int GEMDQMBase::getVFATNumberGE11 ( const int  station,
const int  ieta,
const int  vfat_phi 
)
inlineprotected

Definition at line 625 of file GEMDQMBase.h.

References LEDCalibrationChannels::ieta, and GEMeMap::maxiEtaIdGE11_.

Referenced by getVFATNumber().

625  {
626  return vfat_phi * GEMeMap::maxiEtaIdGE11_ + (GEMeMap::maxiEtaIdGE11_ - ieta);
627 }
static const int maxiEtaIdGE11_
Definition: GEMeMap.h:70

◆ initGeometry()

int GEMDQMBase::initGeometry ( edm::EventSetup const &  iSetup)
protected

Definition at line 27 of file GEMDQMBase.cc.

References GEMGeometry_, geomToken_, edm::EventSetup::getHandle(), patZpeak::handle, and log_category_.

Referenced by GEMRecHitSource::bookHistograms(), GEMDigiSource::bookHistograms(), and GEMDAQStatusSource::bookHistograms().

27  {
28  GEMGeometry_ = nullptr;
29  if (auto handle = iSetup.getHandle(geomToken_)) {
30  GEMGeometry_ = handle.product();
31  } else {
32  edm::LogError(log_category_) << "+++ Error : GEM geometry is unavailable on event loop. +++\n";
33  return -1;
34  }
35 
36  return 0;
37 }
Log< level::Error, false > LogError
std::string log_category_
Definition: GEMDQMBase.h:524
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
Definition: GEMDQMBase.h:580
const GEMGeometry * GEMGeometry_
Definition: GEMDQMBase.h:579

◆ key3Tokey2()

ME2IdsKey GEMDQMBase::key3Tokey2 ( ME3IdsKey  key)
inlineprotected

Definition at line 550 of file GEMDQMBase.h.

References crabWrapper::key, keyToRegion(), and keyToStation().

550  {
551  auto keyNew = ME2IdsKey{keyToRegion(key), keyToStation(key)};
552  return keyNew;
553  };
int keyToRegion(ME2IdsKey key)
Definition: GEMDQMBase.h:538
int keyToStation(ME2IdsKey key)
Definition: GEMDQMBase.h:541
std::tuple< Int_t, Int_t > ME2IdsKey

◆ key4Tokey3()

ME3IdsKey GEMDQMBase::key4Tokey3 ( ME4IdsKey  key)
inlineprotected

◆ keyToChamber()

int GEMDQMBase::keyToChamber ( ME4IdsKey  key)
inlineprotected

Definition at line 546 of file GEMDQMBase.h.

References crabWrapper::key.

Referenced by GEMDAQStatusSource::analyze(), and GEMDAQStatusSource::FillStatusSummaryPlot().

546 { return std::get<3>(key); };

◆ keyToIEta() [1/2]

int GEMDQMBase::keyToIEta ( ME3IdsKey  key)
inlineprotected

Definition at line 547 of file GEMDQMBase.h.

References crabWrapper::key.

Referenced by GEMRecHitSource::analyze().

547 { return std::get<2>(key); };

◆ keyToIEta() [2/2]

int GEMDQMBase::keyToIEta ( ME4IdsKey  key)
inlineprotected

Definition at line 548 of file GEMDQMBase.h.

References crabWrapper::key.

548 { return std::get<3>(key); };

◆ keyToLayer() [1/2]

int GEMDQMBase::keyToLayer ( ME3IdsKey  key)
inlineprotected

Definition at line 544 of file GEMDQMBase.h.

References crabWrapper::key.

Referenced by CreateSummaryHist(), getNameDirLayer(), and key4Tokey3().

544 { return std::get<2>(key); };

◆ keyToLayer() [2/2]

int GEMDQMBase::keyToLayer ( ME4IdsKey  key)
inlineprotected

Definition at line 545 of file GEMDQMBase.h.

References crabWrapper::key.

545 { return std::get<2>(key); };

◆ keyToRegion() [1/3]

int GEMDQMBase::keyToRegion ( ME2IdsKey  key)
inlineprotected

Definition at line 538 of file GEMDQMBase.h.

References crabWrapper::key.

Referenced by CreateSummaryHist(), getNameDirLayer(), key3Tokey2(), and key4Tokey3().

538 { return std::get<0>(key); };

◆ keyToRegion() [2/3]

int GEMDQMBase::keyToRegion ( ME3IdsKey  key)
inlineprotected

Definition at line 539 of file GEMDQMBase.h.

References crabWrapper::key.

539 { return std::get<0>(key); };

◆ keyToRegion() [3/3]

int GEMDQMBase::keyToRegion ( ME4IdsKey  key)
inlineprotected

Definition at line 540 of file GEMDQMBase.h.

References crabWrapper::key.

540 { return std::get<0>(key); };

◆ keyToStation() [1/3]

int GEMDQMBase::keyToStation ( ME2IdsKey  key)
inlineprotected

Definition at line 541 of file GEMDQMBase.h.

References crabWrapper::key.

Referenced by CreateSummaryHist(), getNameDirLayer(), key3Tokey2(), and key4Tokey3().

541 { return std::get<1>(key); };

◆ keyToStation() [2/3]

int GEMDQMBase::keyToStation ( ME3IdsKey  key)
inlineprotected

Definition at line 542 of file GEMDQMBase.h.

References crabWrapper::key.

542 { return std::get<1>(key); };

◆ keyToStation() [3/3]

int GEMDQMBase::keyToStation ( ME4IdsKey  key)
inlineprotected

Definition at line 543 of file GEMDQMBase.h.

References crabWrapper::key.

543 { return std::get<1>(key); };

◆ loadChambers()

int GEMDQMBase::loadChambers ( )
protected

Definition at line 56 of file GEMDQMBase.cc.

References chambers, GEMGeometry_, getMaxVFAT(), getNumEtaPartitions(), l1tTowerCalibrationProducer_cfi::iEta, listChamberId_, mapEtaPartition_, mapStationInfo_, SiStripPI::max, GEMeMap::maxChan_, nMaxNumCh_, readGeometryPhiInfoChamber(), readGeometryRadiusInfoChamber(), HLT_2022v15_cff::region, GEMGeometry::regions(), and relativeConstraints::station.

Referenced by GEMRecHitSource::bookHistograms(), GEMDigiSource::bookHistograms(), and GEMDAQStatusSource::bookHistograms().

56  {
57  if (GEMGeometry_ == nullptr)
58  return -1;
59  listChamberId_.clear();
60  mapEtaPartition_.clear();
61  for (const GEMRegion* region : GEMGeometry_->regions()) {
62  for (const GEMStation* station : region->stations()) {
63  for (auto sch : station->superChambers()) {
64  for (auto pchamber : sch->chambers()) {
65  GEMDetId gid = pchamber->id();
66  listChamberId_.push_back(pchamber->id());
67  for (auto iEta : pchamber->etaPartitions()) {
68  mapEtaPartition_[gid].push_back(iEta);
69  }
70  }
71  }
72  }
73  }
74 
75  // Borrwed from DQM/GEM/src/GEMOfflineMonitor.cc
76  nMaxNumCh_ = 0;
77  for (const GEMRegion* region : GEMGeometry_->regions()) {
78  const int region_number = region->region();
79 
80  for (const GEMStation* station : region->stations()) {
81  const auto&& superchambers = station->superChambers();
82 
83  const int station_number = station->station();
84  const int num_superchambers = (station_number == 1 ? 36 : 18);
85  const int max_vfat = getMaxVFAT(station->station()); // the number of VFATs per GEMEtaPartition
86  const int num_etas = getNumEtaPartitions(station); // the number of eta partitions per GEMChamber
87  const int num_vfat = num_etas * max_vfat; // the number of VFATs per GEMChamber
88  const int num_digi = GEMeMap::maxChan_; // the number of digis (channels) per VFAT
89 
90  nMaxNumCh_ = std::max(nMaxNumCh_, num_superchambers);
91 
92  Int_t nMinIdxChamber = 1048576;
93  Int_t nMaxIdxChamber = -1048576;
94  for (auto sch : superchambers) {
95  auto nIdxChamber = sch->chambers().front()->id().chamber();
96  if (nMinIdxChamber > nIdxChamber)
97  nMinIdxChamber = nIdxChamber;
98  if (nMaxIdxChamber < nIdxChamber)
99  nMaxIdxChamber = nIdxChamber;
100  }
101 
102  const auto& chambers = superchambers.front()->chambers();
103 
104  for (auto pchamber : chambers) {
105  int layer_number = pchamber->id().layer();
106  ME3IdsKey key3(region_number, station_number, layer_number);
107  mapStationInfo_[key3] = MEStationInfo(region_number,
108  station_number,
109  layer_number,
110  num_superchambers,
111  num_etas,
112  num_vfat,
113  num_digi,
114  nMinIdxChamber,
115  nMaxIdxChamber);
118  }
119  }
120  }
121 
122  return 0;
123 }
std::vector< GEMDetId > listChamberId_
Definition: GEMDQMBase.h:582
int readGeometryRadiusInfoChamber(const GEMStation *station, MEStationInfo &stationInfo)
Definition: GEMDQMBase.cc:242
std::map< ME3IdsKey, MEStationInfo > mapStationInfo_
Definition: GEMDQMBase.h:594
int readGeometryPhiInfoChamber(const GEMStation *station, MEStationInfo &stationInfo)
Definition: GEMDQMBase.cc:303
static const int maxChan_
Definition: GEMeMap.h:72
int getNumEtaPartitions(const GEMStation *)
Definition: GEMDQMBase.cc:40
int getMaxVFAT(const int)
Definition: GEMDQMBase.h:608
const GEMGeometry * GEMGeometry_
Definition: GEMDQMBase.h:579
std::map< GEMDetId, std::vector< const GEMEtaPartition * > > mapEtaPartition_
Definition: GEMDQMBase.h:583
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
Definition: GEMGeometry.cc:30
int nMaxNumCh_
Definition: GEMDQMBase.h:592
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey
static char chambers[264][20]
Definition: ReadPGInfo.cc:243

◆ ProcessWithMEMap2()

virtual int GEMDQMBase::ProcessWithMEMap2 ( BookingHelper bh,
ME2IdsKey  key 
)
inlineprotectedvirtual

Reimplemented in GEMDigiSource.

Definition at line 531 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

531 { return 0; }; // must be overrided

◆ ProcessWithMEMap2AbsReWithEta()

virtual int GEMDQMBase::ProcessWithMEMap2AbsReWithEta ( BookingHelper bh,
ME3IdsKey  key 
)
inlineprotectedvirtual

Reimplemented in GEMRecHitSource.

Definition at line 533 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

533 { return 0; }; // must be overrided

◆ ProcessWithMEMap2WithEta()

virtual int GEMDQMBase::ProcessWithMEMap2WithEta ( BookingHelper bh,
ME3IdsKey  key 
)
inlineprotectedvirtual

Reimplemented in GEMDigiSource, and GEMRecHitSource.

Definition at line 532 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

532 { return 0; }; // must be overrided

◆ ProcessWithMEMap3()

virtual int GEMDQMBase::ProcessWithMEMap3 ( BookingHelper bh,
ME3IdsKey  key 
)
inlineprotectedvirtual

Reimplemented in GEMDAQStatusSource, GEMDigiSource, and GEMRecHitSource.

Definition at line 534 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

534 { return 0; }; // must be overrided

◆ ProcessWithMEMap3WithChamber()

virtual int GEMDQMBase::ProcessWithMEMap3WithChamber ( BookingHelper bh,
ME4IdsKey  key 
)
inlineprotectedvirtual

Reimplemented in GEMDAQStatusSource, GEMDigiSource, and GEMRecHitSource.

Definition at line 536 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

536 { return 0; }; // must be overrided

◆ ProcessWithMEMap4()

virtual int GEMDQMBase::ProcessWithMEMap4 ( BookingHelper bh,
ME4IdsKey  key 
)
inlineprotectedvirtual

Definition at line 535 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

535 { return 0; }; // must be overrided

◆ readGeometryPhiInfoChamber()

int GEMDQMBase::readGeometryPhiInfoChamber ( const GEMStation station,
MEStationInfo stationInfo 
)

Definition at line 303 of file GEMDQMBase.cc.

References funct::abs(), GEMDQMBase::MEStationInfo::fMinPhi_, l1tTowerCalibrationProducer_cfi::iEta, SiStripPI::max, SiStripPI::min, GEMDQMBase::MEStationInfo::nMaxVFAT_, GEMDQMBase::MEStationInfo::nNumDigi_, GEMDQMBase::MEStationInfo::nNumEtaPartitions_, AlCaHLTBitMon_ParallelJobs::p, PV3DBase< T, PVType, FrameType >::phi(), and relativeConstraints::station.

Referenced by loadChambers().

303  {
304  auto listSuperChambers = station->superChambers();
305  Int_t nNumStripEta = stationInfo.nNumDigi_ * (stationInfo.nMaxVFAT_ / stationInfo.nNumEtaPartitions_);
306 
307  std::vector<std::pair<Int_t, std::pair<std::pair<Float_t, Float_t>, Bool_t>>> listDivPhi;
308 
309  // Obtaining phi intervals of chambers
310  for (auto superchamber : listSuperChambers) {
311  auto iEta = superchamber->chambers().front()->etaPartitions().front();
312 
313  // What is the index of the first strip? Rather than to ask to someone, let's calculate it!
314  Float_t fWidthStrip = std::abs(iEta->centreOfStrip((Int_t)1).x() - iEta->centreOfStrip((Int_t)0).x());
315  LocalPoint lpRef(-fWidthStrip / 3.0, 0.0);
316  Int_t nStripMid = (Int_t)iEta->strip(lpRef);
317  Int_t nFirstStrip = 1 - ((nNumStripEta / 2) - nStripMid);
318  Int_t nLastStrip = nFirstStrip + nNumStripEta - 1;
319 
320  auto& surface = iEta->surface();
321  LocalPoint lpF = iEta->centreOfStrip((Float_t)(nFirstStrip - 0.5)); // To avoid the round error(?)
322  LocalPoint lpL = iEta->centreOfStrip((Float_t)(nLastStrip + 0.5)); // To avoid the round error(?)
323  GlobalPoint gpF = surface.toGlobal(lpF);
324  GlobalPoint gpL = surface.toGlobal(lpL);
325 
326  Float_t fPhiF = gpF.phi();
327  Float_t fPhiL = gpL.phi();
328  if (fPhiF * fPhiL < 0 && std::abs(fPhiF) > 0.5 * 3.14159265359) {
329  if (fPhiF < 0)
330  fPhiF += 2 * 3.14159265359;
331  if (fPhiL < 0)
332  fPhiL += 2 * 3.14159265359;
333  }
334  Bool_t bFlipped = fPhiF > fPhiL;
335  Float_t fPhiMin = std::min(fPhiF, fPhiL);
336  Float_t fPhiMax = std::max(fPhiF, fPhiL);
337 
338  listDivPhi.emplace_back();
339  listDivPhi.back().first = iEta->id().chamber();
340  listDivPhi.back().second.first.first = fPhiMin;
341  listDivPhi.back().second.first.second = fPhiMax;
342  listDivPhi.back().second.second = bFlipped;
343  }
344 
345  stationInfo.fMinPhi_ = 0.0;
346  for (auto p : listDivPhi) {
347  if (p.first == 1) {
348  stationInfo.fMinPhi_ = p.second.first.first;
349  break;
350  }
351  }
352 
353  // For a future usage
354  //for ( auto p : listDivPhi ) {
355  // std::cout << "GEO_PHI: " << p.first << " "
356  // << p.second.first.first << " " << p.second.first.second << " " << p.second.second << std::endl;
357  //}
358 
359  return 0;
360 }
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
Abs< T >::type abs(const T &t)
Definition: Abs.h:22

◆ readGeometryRadiusInfoChamber()

int GEMDQMBase::readGeometryRadiusInfoChamber ( const GEMStation station,
MEStationInfo stationInfo 
)

Definition at line 242 of file GEMDQMBase.cc.

References mps_fire::i, l1tTowerCalibrationProducer_cfi::iEta, createfilelist::int, GEMDQMBase::MEStationInfo::listRadiusEvenChamber_, GEMDQMBase::MEStationInfo::listRadiusOddChamber_, SiStripPI::max, SiStripPI::min, PV3DBase< T, PVType, FrameType >::perp(), jetsAK4_CHS_cff::sort, relativeConstraints::station, and GEMStripTopology::stripLength().

Referenced by loadChambers().

242  {
243  auto listSuperChambers = station->superChambers();
244 
245  Bool_t bDoneEven = false, bDoneOdd = false;
246 
247  // Obtaining radius intervals of even/odd chambers
248  for (auto superchamber : listSuperChambers) {
249  Int_t chamberNo = superchamber->id().chamber();
250  if (chamberNo % 2 == 0 && bDoneEven)
251  continue;
252  if (chamberNo % 2 != 0 && bDoneOdd)
253  continue;
254 
255  auto& etaPartitions = superchamber->chambers().front()->etaPartitions();
256 
257  // A little of additional procedures to list up the radius intervals
258  // It would be independent to local direction of chambers and the order of eta partitions
259  // 1. Obtain the radius of the middle top/bottom points of the trapezoid
260  // 2. Sort these two values and determine which one is the lower/upper one
261  // 3. Keep them all and then sort them
262  // 4. The intermediate radii are set as the mean of the corresponding values of upper/lowers.
263  std::vector<Float_t> listRadiusLower, listRadiusUpper;
264  for (auto iEta : etaPartitions) {
265  const GEMStripTopology& stripTopology = dynamic_cast<const GEMStripTopology&>(iEta->specificTopology());
266  Float_t fHeight = stripTopology.stripLength();
267  LocalPoint lp1(0.0, -0.5 * fHeight), lp2(0.0, 0.5 * fHeight);
268  auto& surface = iEta->surface();
269  GlobalPoint gp1 = surface.toGlobal(lp1), gp2 = surface.toGlobal(lp2);
270  Float_t fR1 = gp1.perp(), fR2 = gp2.perp();
271  Float_t fRL = std::min(fR1, fR2), fRH = std::max(fR1, fR2);
272  listRadiusLower.push_back(fRL);
273  listRadiusUpper.push_back(fRH);
274  // For a future usage
275  //std::cout << "GEO_RADIUS: " << iEta->id().chamber() << " " << iEta->id().ieta() << " "
276  // << fRL << " " << fRH << std::endl;
277  }
278 
279  std::sort(listRadiusLower.begin(), listRadiusLower.end());
280  std::sort(listRadiusUpper.begin(), listRadiusUpper.end());
281 
282  std::vector<Float_t>& listR =
283  (chamberNo % 2 == 0 ? stationInfo.listRadiusEvenChamber_ : stationInfo.listRadiusOddChamber_);
284  listR.clear();
285  listR.push_back(listRadiusLower.front());
286  for (int i = 1; i < (int)listRadiusLower.size(); i++) {
287  listR.push_back(0.5 * (listRadiusLower[i] + listRadiusUpper[i - 1]));
288  }
289  listR.push_back(listRadiusUpper.back());
290 
291  if (chamberNo % 2 == 0)
292  bDoneEven = true;
293  if (chamberNo % 2 != 0)
294  bDoneOdd = true;
295 
296  if (bDoneEven && bDoneOdd)
297  break;
298  }
299 
300  return 0;
301 }
float stripLength() const override
T perp() const
Definition: PV3DBase.h:69

◆ restrictAngle()

Float_t GEMDQMBase::restrictAngle ( const Float_t  fTheta,
const Float_t  fStart 
)
inlineprotected

Definition at line 660 of file GEMDQMBase.h.

References createfilelist::int, and M_PI.

Referenced by GEMRecHitSource::analyze(), and GEMDigiSource::analyze().

660  {
661  Float_t fLoop = (fTheta - fStart) / (2 * M_PI);
662  int nLoop = (fLoop >= 0 ? (int)fLoop : (int)fLoop - 1);
663  return fTheta - nLoop * 2 * M_PI;
664 }
#define M_PI

◆ SortingLayers()

int GEMDQMBase::SortingLayers ( std::vector< ME3IdsKey > &  listLayers)
protected

Definition at line 125 of file GEMDQMBase.cc.

References funct::abs(), and jetsAK4_CHS_cff::sort.

Referenced by CreateSummaryHist().

125  {
126  std::sort(listLayers.begin(), listLayers.end(), [](ME3IdsKey key1, ME3IdsKey key2) {
127  Int_t re1 = std::get<0>(key1), st1 = std::get<1>(key1), la1 = std::get<2>(key1);
128  Int_t re2 = std::get<0>(key2), st2 = std::get<1>(key2), la2 = std::get<2>(key2);
129  if (re1 < 0 && re2 > 0)
130  return false;
131  if (re1 > 0 && re2 < 0)
132  return true;
133  Bool_t bRes = (re1 < 0); // == re2 < 0
134  Int_t sum1 = 256 * std::abs(re1) + 16 * st1 + 1 * la1;
135  Int_t sum2 = 256 * std::abs(re2) + 16 * st2 + 1 * la2;
136  if (sum1 <= sum2)
137  return bRes;
138  return !bRes;
139  });
140 
141  return 0;
142 }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey

Member Data Documentation

◆ GEMGeometry_

const GEMGeometry* GEMDQMBase::GEMGeometry_
protected

◆ geomToken_

edm::ESGetToken<GEMGeometry, MuonGeometryRecord> GEMDQMBase::geomToken_
protected

Definition at line 580 of file GEMDQMBase.h.

Referenced by initGeometry().

◆ listChamberId_

std::vector<GEMDetId> GEMDQMBase::listChamberId_
protected

◆ log_category_

std::string GEMDQMBase::log_category_

◆ mapEtaPartition_

std::map<GEMDetId, std::vector<const GEMEtaPartition *> > GEMDQMBase::mapEtaPartition_
protected

◆ mapStationInfo_

std::map<ME3IdsKey, MEStationInfo> GEMDQMBase::mapStationInfo_
protected

◆ mapStationToIdx_

std::map<ME3IdsKey, int> GEMDQMBase::mapStationToIdx_
protected

◆ MEMap2AbsReWithEtaCheck_

std::map<ME3IdsKey, bool> GEMDQMBase::MEMap2AbsReWithEtaCheck_
protected

Definition at line 587 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

◆ MEMap2Check_

std::map<ME2IdsKey, bool> GEMDQMBase::MEMap2Check_
protected

Definition at line 585 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

◆ MEMap2WithEtaCheck_

std::map<ME3IdsKey, bool> GEMDQMBase::MEMap2WithEtaCheck_
protected

Definition at line 586 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

◆ MEMap3Check_

std::map<ME3IdsKey, bool> GEMDQMBase::MEMap3Check_
protected

Definition at line 588 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

◆ MEMap3WithChCheck_

std::map<ME4IdsKey, bool> GEMDQMBase::MEMap3WithChCheck_
protected

Definition at line 589 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

◆ MEMap4Check_

std::map<ME4IdsKey, bool> GEMDQMBase::MEMap4Check_
protected

Definition at line 590 of file GEMDQMBase.h.

Referenced by GenerateMEPerChamber().

◆ nMaxNumCh_

int GEMDQMBase::nMaxNumCh_
protected

Definition at line 592 of file GEMDQMBase.h.

Referenced by CreateSummaryHist(), and loadChambers().

◆ nRunType_

Int_t GEMDQMBase::nRunType_