CMS 3D CMS Logo

GEMDigiSource.cc
Go to the documentation of this file.
9 
14 
16 
18 
20 
22 
23 #include <string>
24 
25 //----------------------------------------------------------------------------------------------------
26 
27 class GEMDigiSource : public GEMDQMBase {
28 public:
29  explicit GEMDigiSource(const edm::ParameterSet& cfg);
30  ~GEMDigiSource() override{};
31  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
32 
33 protected:
34  void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override{};
35  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
36  void analyze(edm::Event const& e, edm::EventSetup const& eSetup) override;
37 
38 private:
39  int ProcessWithMEMap3(BookingHelper& bh, ME3IdsKey key) override;
40  int ProcessWithMEMap3WithChamber(BookingHelper& bh, ME4IdsKey key) override;
41 
43 
45 
51 
54 
56 
57  Int_t nBXMin_, nBXMax_;
58 };
59 
60 using namespace std;
61 using namespace edm;
62 
64  tagDigi_ = consumes<GEMDigiCollection>(cfg.getParameter<edm::InputTag>("digisInputLabel"));
65  lumiScalers_ = consumes<LumiScalersCollection>(
66  cfg.getUntrackedParameter<edm::InputTag>("lumiCollection", edm::InputTag("scalersRawToDigi")));
67 }
68 
71  desc.add<edm::InputTag>("digisInputLabel", edm::InputTag("muonGEMDigis", ""));
72  desc.addUntracked<std::string>("logCategory", "GEMDigiSource");
73  descriptions.add("GEMDigiSource", desc);
74 }
75 
77  initGeometry(iSetup);
78  if (GEMGeometry_ == nullptr)
79  return;
80  loadChambers();
81 
82  nBXMin_ = -10;
83  nBXMax_ = 10;
84 
85  mapTotalDigi_layer_ = MEMap3Inf(this, "digi_det", "Digi Occupancy", 36, 0.5, 36.5, 24, 0.5, 24.5, "Chamber", "VFAT");
87  this, "strip_ieta_occ", "Strip Digi Occupancy per eta partition", 8, 0.5, 8.5, "iEta", "Number of fired strips");
89  "strip_phi_occ",
90  "Strip Digi Phi (degree) Occupancy ",
91  108,
92  -5,
93  355,
94  "#phi (degree)",
95  "Number of fired strips");
97  "total_strips_per_event",
98  "Total number of strip digis per event for each layers ",
99  50,
100  -0.5,
101  99.5,
102  "Number of fired strips",
103  "Events");
104  mapBX_layer_ =
105  MEMap3Inf(this, "bx", "Strip Digi Bunch Crossing ", 21, nBXMin_ - 0.5, nBXMax_ + 0.5, "Bunch crossing");
106 
107  mapStripOccPerCh_ = MEMap4Inf(this, "strip_occ", "Strip Digi Occupancy ", 1, 0.5, 1.5, 1, 0.5, 1.5, "Strip", "iEta");
108  mapBXPerCh_ = MEMap4Inf(this,
109  "bx_ch",
110  "Strip Digi Bunch Crossing ",
111  21,
112  nBXMin_ - 0.5,
113  nBXMax_ + 0.5,
114  1,
115  0.5,
116  1.5,
117  "Bunch crossing",
118  "VFAT");
119 
120  ibooker.cd();
121  ibooker.setCurrentFolder("GEM/digi");
122  GenerateMEPerChamber(ibooker);
123 
124  h2SummaryOcc = CreateSummaryHist(ibooker, "summaryOccDigi");
125  h2SummaryMal = CreateSummaryHist(ibooker, "summaryMalfuncDigi");
126 }
127 
129  MEStationInfo& stationInfo = mapStationInfo_[key];
130 
136 
139  mapTotalDigi_layer_.SetLabelForChambers(key, 1); // For eta partitions
140 
143  mapBX_layer_.bookND(bh, key);
144 
145  return 0;
146 }
147 
149  ME3IdsKey key3 = key4Tokey3(key);
150  MEStationInfo& stationInfo = mapStationInfo_[key3];
151 
152  int nNumVFATPerRoll = stationInfo.nMaxVFAT_ / stationInfo.nNumEtaPartitions_;
153  int nNumCh = stationInfo.nNumStrip_;
154 
155  mapStripOccPerCh_.SetBinConfX(nNumCh * nNumVFATPerRoll);
158  mapStripOccPerCh_.SetLabelForChambers(key, 2); // For eta partitions
159 
160  mapBXPerCh_.SetBinConfY(stationInfo.nMaxVFAT_);
161  mapBXPerCh_.bookND(bh, key);
163 
164  return 0;
165 }
166 
167 void GEMDigiSource::analyze(edm::Event const& event, edm::EventSetup const& eventSetup) {
169  event.getByToken(this->tagDigi_, gemDigis);
171  event.getByToken(lumiScalers_, lumiScalers);
172 
173  std::map<ME3IdsKey, Int_t> total_strip_layer;
174  for (const auto& ch : gemChambers_) {
175  GEMDetId gid = ch.id();
176  ME2IdsKey key2{gid.region(), gid.station()};
177  ME3IdsKey key3{gid.region(), gid.station(), gid.layer()};
178  ME4IdsKey key4Ch{gid.region(), gid.station(), gid.layer(), gid.chamber()};
179  std::map<Int_t, bool> bTagVFAT;
180  bTagVFAT.clear();
181  const BoundPlane& surface = GEMGeometry_->idToDet(gid)->surface();
182  if (total_strip_layer.find(key3) == total_strip_layer.end())
183  total_strip_layer[key3] = 0;
184  for (auto roll : ch.etaPartitions()) {
185  GEMDetId rId = roll->id();
186  const auto& digis_in_det = gemDigis->get(rId);
187  for (auto d = digis_in_det.first; d != digis_in_det.second; ++d) {
188  // Filling of digi occupancy
189  Int_t nIdxVFAT = getVFATNumberByStrip(gid.station(), rId.roll(), d->strip());
190  mapTotalDigi_layer_.Fill(key3, gid.chamber(), nIdxVFAT + 1);
191 
192  // Filling of strip
193  mapStripOcc_ieta_.Fill(key3, rId.roll()); // Roll
194 
195  GlobalPoint strip_global_pos = surface.toGlobal(roll->centreOfStrip(d->strip()));
196  Float_t fPhiDeg = ((Float_t)strip_global_pos.phi()) * 180.0 / 3.141592;
197  if (fPhiDeg < -5.0)
198  fPhiDeg += 360.0;
199  mapStripOcc_phi_.Fill(key3, fPhiDeg); // Phi
200 
201  mapStripOccPerCh_.Fill(key4Ch, d->strip(), rId.roll()); // Per chamber
202 
203  // For total strips
204  total_strip_layer[key3]++;
205 
206  // Filling of bx
207  Int_t nBX = std::min(std::max((Int_t)d->bx(), nBXMin_), nBXMax_); // For under/overflow
208  if (bTagVFAT.find(nIdxVFAT) == bTagVFAT.end()) {
209  mapBX_layer_.Fill(key3, nBX);
210  mapBXPerCh_.Fill(key4Ch, nBX, nIdxVFAT);
211  }
212 
213  // Occupancy on a chamber
214  h2SummaryOcc->Fill(gid.chamber(), mapStationToIdx_[key3]);
215 
216  bTagVFAT[nIdxVFAT] = true;
217  }
218  }
219  }
220  for (auto [key, num_total_strip] : total_strip_layer)
221  mapTotalStripPerEvt_.Fill(key, num_total_strip);
222 }
223 
GEMDQMBase::MEMapInfT::SetBinConfX
void SetBinConfX(Int_t nBins, Double_t dL=0.5, Double_t dH=-1048576.0)
Definition: GEMDQMBase.h:184
GEMDQMBase::gemChambers_
std::vector< GEMChamber > gemChambers_
Definition: GEMDQMBase.h:402
ME2IdsKey
std::tuple< Int_t, Int_t > ME2IdsKey
Definition: GEMValidationUtils.h:16
LumiScalers.h
GEMDigiSource::mapStripOcc_phi_
MEMap3Inf mapStripOcc_phi_
Definition: GEMDigiSource.cc:48
GEMDigiSource::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: GEMDigiSource.cc:76
GEMDigiSource::mapTotalDigi_layer_
MEMap3Inf mapTotalDigi_layer_
Definition: GEMDigiSource.cc:46
MessageLogger.h
GEMDigiSource
Definition: GEMDigiSource.cc:27
GEMDigiSource::mapStripOccPerCh_
MEMap4Inf mapStripOccPerCh_
Definition: GEMDigiSource.cc:52
ESHandle.h
GEMDigiSource::ProcessWithMEMap3
int ProcessWithMEMap3(BookingHelper &bh, ME3IdsKey key) override
Definition: GEMDigiSource.cc:128
GEMDetId::layer
constexpr int layer() const
Definition: GEMDetId.h:187
GEMDQMBase::MEStationInfo
Definition: GEMDQMBase.h:320
edm::Run
Definition: Run.h:45
min
T min(T a, T b)
Definition: MathUtil.h:58
GEMGeometry::idToDet
const GeomDet * idToDet(DetId) const override
Definition: GEMGeometry.cc:25
GEMDetId::region
constexpr int region() const
Definition: GEMDetId.h:168
edm::EDGetTokenT< LumiScalersCollection >
GEMDQMBase::GEMGeometry_
const GEMGeometry * GEMGeometry_
Definition: GEMDQMBase.h:400
edm
HLT enums.
Definition: AlignableModifier.h:19
V0Monitor_cfi.lumiScalers
lumiScalers
Definition: V0Monitor_cfi.py:9
ME4IdsKey
std::tuple< Int_t, Int_t, Int_t, Int_t > ME4IdsKey
Definition: GEMValidationUtils.h:20
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
GEMDigiSource::analyze
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
Definition: GEMDigiSource.cc:167
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
GEMDigiSource::mapTotalStripPerEvt_
MEMap3Inf mapTotalStripPerEvt_
Definition: GEMDigiSource.cc:49
DQMStore.h
GEMDigiSource::h2SummaryOcc
MonitorElement * h2SummaryOcc
Definition: GEMDigiSource.cc:55
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
GEMDQMBase::MEMapInfT::Fill
int Fill(K key, Double_t x)
Definition: GEMDQMBase.h:263
edm::Handle< GEMDigiCollection >
GEMDQMBase::key4Tokey3
ME3IdsKey key4Tokey3(ME4IdsKey key)
Definition: GEMDQMBase.h:378
GEMDQMBase::MEMapInfT::SetLabelForVFATs
int SetLabelForVFATs(K key, Int_t nNumEtaPartitions, Int_t nAxis, Int_t nNumBin=-1)
Definition: GEMDQMBase.h:244
GEMDQMBase::MEStationInfo::nNumStrip_
Int_t nNumStrip_
Definition: GEMDQMBase.h:350
GEMValidationUtils.h
GEMDQMBase::MEMapInfT::SetLabelForChambers
int SetLabelForChambers(K key, Int_t nAxis, Int_t nNumBin=-1)
Definition: GEMDQMBase.h:226
GEMDQMBase::BookingHelper
Definition: GEMDQMBase.h:32
GEMDigiSource::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: GEMDigiSource.cc:69
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
MakerMacros.h
GEMDQMBase.h
GEMDigiSource::mapBX_layer_
MEMap3Inf mapBX_layer_
Definition: GEMDigiSource.cc:50
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
GEMDigiSource::mapStripOcc_ieta_
MEMap3Inf mapStripOcc_ieta_
Definition: GEMDigiSource.cc:47
GEMDigiSource::nBXMax_
Int_t nBXMax_
Definition: GEMDigiSource.cc:57
GEMDQMBase::MEStationInfo::nNumEtaPartitions_
Int_t nNumEtaPartitions_
Definition: GEMDQMBase.h:348
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
GEMDigiSource::tagDigi_
edm::EDGetToken tagDigi_
Definition: GEMDigiSource.cc:42
GEMDigiSource::h2SummaryMal
MonitorElement * h2SummaryMal
Definition: GEMDigiSource.cc:55
Point3DBase< float, GlobalTag >
GEMDigiSource::nBXMin_
Int_t nBXMin_
Definition: GEMDigiSource.cc:57
DQMEDAnalyzer.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
GEMDQMBase::CreateSummaryHist
dqm::impl::MonitorElement * CreateSummaryHist(DQMStore::IBooker &ibooker, TString strName)
Definition: GEMDQMBase.cc:121
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
GEMDigiSource::~GEMDigiSource
~GEMDigiSource() override
Definition: GEMDigiSource.cc:30
GEMDQMBase::MEStationInfo::nMaxVFAT_
Int_t nMaxVFAT_
Definition: GEMDQMBase.h:349
GEMDetId::chamber
constexpr int chamber() const
Definition: GEMDetId.h:180
MonitorElement.h
GEMDQMBase::initGeometry
int initGeometry(edm::EventSetup const &iSetup)
Definition: GEMDQMBase.cc:14
edm::ParameterSet
Definition: ParameterSet.h:47
GEMDQMBase::MEMap4Inf
MEMapInfT< MEMap4Ids, ME4IdsKey > MEMap4Inf
Definition: GEMDQMBase.h:318
Event.h
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
GEMDQMBase::MEStationInfo::nNumChambers_
Int_t nNumChambers_
Definition: GEMDQMBase.h:347
GEMDetId::roll
constexpr int roll() const
Definition: GEMDetId.h:191
GEMDetId
Definition: GEMDetId.h:18
GEMDigiSource::lumiScalers_
edm::EDGetTokenT< LumiScalersCollection > lumiScalers_
Definition: GEMDigiSource.cc:44
ModuleDef.h
GEMDigiSource::mapBXPerCh_
MEMap4Inf mapBXPerCh_
Definition: GEMDigiSource.cc:53
GEMDigiSource::GEMDigiSource
GEMDigiSource(const edm::ParameterSet &cfg)
Definition: GEMDigiSource.cc:63
edm::EventSetup
Definition: EventSetup.h:57
edm::EDGetToken
Definition: EDGetToken.h:35
InputTag.h
GEMDQMBase::MEMapInfT
Definition: GEMDQMBase.h:84
GEMDQMBase::getVFATNumberByStrip
int getVFATNumberByStrip(const int, const int, const int)
Definition: GEMDQMBase.h:448
looper.cfg
cfg
Definition: looper.py:297
GEMDQMBase::loadChambers
int loadChambers()
Definition: GEMDQMBase.cc:45
GEMDigiSource::ProcessWithMEMap3WithChamber
int ProcessWithMEMap3WithChamber(BookingHelper &bh, ME4IdsKey key) override
Definition: GEMDigiSource.cc:148
GEMDQMBase::MEMap3Inf
MEMapInfT< MEMap3Ids, ME3IdsKey > MEMap3Inf
Definition: GEMDQMBase.h:317
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
GEMDQMBase::mapStationInfo_
std::map< ME3IdsKey, MEStationInfo > mapStationInfo_
Definition: GEMDQMBase.h:411
GEMDQMBase::MEMapInfT::SetBinConfY
void SetBinConfY(Int_t nBins, Double_t dL=0.5, Double_t dH=-1048576.0)
Definition: GEMDQMBase.h:192
BoundPlane
ME3IdsKey
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey
Definition: GEMValidationUtils.h:19
EventSetup.h
GEMDQMBase
Definition: GEMDQMBase.h:29
GEMDigiCollection.h
dqm::implementation::IBooker
Definition: DQMStore.h:43
GEMDQMBase::mapStationToIdx_
std::map< ME3IdsKey, int > mapStationToIdx_
Definition: GEMDQMBase.h:410
GEMDetId::station
constexpr int station() const
Definition: GEMDetId.h:176
ztail.d
d
Definition: ztail.py:151
ParameterSet.h
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
crabWrapper.key
key
Definition: crabWrapper.py:19
GEMDQMBase::MEMapInfT::bookND
int bookND(BookingHelper &bh, K key)
Definition: GEMDQMBase.h:201
GEMDigiSource::dqmBeginRun
void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override
Definition: GEMDigiSource.cc:34
edm::InputTag
Definition: InputTag.h:15
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
GEMDQMBase::GenerateMEPerChamber
int GenerateMEPerChamber(DQMStore::IBooker &ibooker)
Definition: GEMDQMBase.cc:147
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37