CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions
RPCTnPEfficiencyTask Class Reference
Inheritance diagram for RPCTnPEfficiencyTask:
BaseTnPEfficiencyTask DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

 RPCTnPEfficiencyTask (const edm::ParameterSet &config)
 Constructor. More...
 
 ~RPCTnPEfficiencyTask () override
 Destructor. More...
 
- Public Member Functions inherited from BaseTnPEfficiencyTask
 BaseTnPEfficiencyTask (const edm::ParameterSet &config)
 Constructor. More...
 
 ~BaseTnPEfficiencyTask () override
 Destructor. More...
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
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
 
 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
 

Protected Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &context) override
 Analyze. More...
 
void bookEndcapHistos (DQMStore::IBooker &iBooker, int stations, std::string folder="")
 Book endcap histograms. More...
 
void bookHistograms (DQMStore::IBooker &iBooker, edm::Run const &run, edm::EventSetup const &context) override
 
void bookWheelHistos (DQMStore::IBooker &iBooker, int wheel, std::string folder="")
 Book wheel granularity histograms. More...
 
int get_barrel_histo_ycoord (int ring, int station, int sector, int layer, int subsector, int roll)
 
std::string topFolder () const override
 Return the top folder. More...
 
- Protected Member Functions inherited from BaseTnPEfficiencyTask
void dqmBeginRun (const edm::Run &run, const edm::EventSetup &context) override
 BeginRun. More...
 
bool hasTrigger (std::vector< int > &trigIndices, const trigger::TriggerObjectCollection &trigObjs, edm::Handle< trigger::TriggerEvent > &trigEvent, const reco::Muon &muon)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 

Additional Inherited Members

- 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
 
- 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 &)
 
- Protected Attributes inherited from BaseTnPEfficiencyTask
const double m_borderCut
 
const bool m_detailedAnalysis
 
const double m_dxCut
 
std::map< std::string, MonitorElement * > m_histos
 
const edm::EDGetTokenT< reco::MuonCollectionm_muToken
 
int m_nEvents
 
std::vector< std::vector< unsigned > > m_probeIndices
 
std::vector< std::vector< unsigned > > m_tagIndices
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 15 of file RPCTnPEfficiencyTask.cc.

Constructor & Destructor Documentation

◆ RPCTnPEfficiencyTask()

RPCTnPEfficiencyTask::RPCTnPEfficiencyTask ( const edm::ParameterSet config)

Constructor.

Definition at line 40 of file RPCTnPEfficiencyTask.cc.

References LogTrace.

41  LogTrace("DQMOffline|MuonDPG|RPCTnPEfficiencyTask") << "[RPCTnPEfficiencyTask]: Constructor" << std::endl;
42 }
Definition: config.py:1
#define LogTrace(id)
BaseTnPEfficiencyTask(const edm::ParameterSet &config)
Constructor.

◆ ~RPCTnPEfficiencyTask()

RPCTnPEfficiencyTask::~RPCTnPEfficiencyTask ( )
override

Destructor.

Definition at line 44 of file RPCTnPEfficiencyTask.cc.

References LogTrace, and BaseTnPEfficiencyTask::m_nEvents.

44  {
45  LogTrace("DQMOffline|MuonDPG|RPCTnPEfficiencyTask")
46  << "[RPCTnPEfficiencyTask]: analyzed " << m_nEvents << " events" << std::endl;
47 }
#define LogTrace(id)

Member Function Documentation

◆ analyze()

void RPCTnPEfficiencyTask::analyze ( const edm::Event event,
const edm::EventSetup context 
)
overrideprotectedvirtual

Analyze.

Reimplemented from BaseTnPEfficiencyTask.

Definition at line 150 of file RPCTnPEfficiencyTask.cc.

References funct::abs(), BaseTnPEfficiencyTask::analyze(), visDQMUpload::context, PVValHelper::dx, get_barrel_histo_ycoord(), mps_fire::i, dqmiolumiharvest::j, nano_mu_digi_cff::layer, BaseTnPEfficiencyTask::m_borderCut, BaseTnPEfficiencyTask::m_detailedAnalysis, BaseTnPEfficiencyTask::m_dxCut, BaseTnPEfficiencyTask::m_histos, BaseTnPEfficiencyTask::m_muToken, BaseTnPEfficiencyTask::m_probeIndices, DiMuonV_cfg::muons, nano_mu_digi_cff::region, relativeConstraints::ring, nano_mu_digi_cff::roll, MuonSubdetId::RPC, nano_mu_digi_cff::sector, relativeConstraints::station, AlCaHLTBitMon_QueryRunRegistry::string, nano_mu_digi_cff::subsector, and to_string().

150  {
152 
154  event.getByToken(m_muToken, muons);
155 
156  //RPC variables
157  std::vector<std::vector<int>> probe_coll_RPC_region;
158  std::vector<std::vector<int>> probe_coll_RPC_ring;
159  std::vector<std::vector<int>> probe_coll_RPC_sta;
160  std::vector<std::vector<int>> probe_coll_RPC_sec;
161  std::vector<std::vector<int>> probe_coll_RPC_lay;
162  std::vector<std::vector<int>> probe_coll_RPC_sub;
163  std::vector<std::vector<int>> probe_coll_RPC_roll;
164  std::vector<std::vector<float>> probe_coll_RPC_dx;
165  std::vector<uint8_t> probe_coll_RPC_staMatch;
166 
167  std::vector<unsigned> probe_indices;
168  if (!m_probeIndices.empty())
169  probe_indices = m_probeIndices.back();
170 
171  //Fill probe dx + subdetector coordinates
172  for (const auto i : probe_indices) {
173  //RPC variables
174  std::vector<int> probe_RPC_region;
175  std::vector<int> probe_RPC_ring;
176  std::vector<int> probe_RPC_sta;
177  std::vector<int> probe_RPC_sec;
178  std::vector<int> probe_RPC_lay;
179  std::vector<int> probe_RPC_sub;
180  std::vector<int> probe_RPC_roll;
181  std::vector<float> probe_RPC_dx;
182  uint8_t RPC_stationMatching = 0;
183 
184  float rpc_matched = false; // fill detailed plots only for probes matching RPC
185 
186  for (const auto& chambMatch : (*muons).at(i).matches()) {
187  // look in RPCs
188  if (chambMatch.detector() == MuonSubdetId::RPC) {
189  if (chambMatch.edgeX < m_borderCut && chambMatch.edgeY < m_borderCut) {
190  rpc_matched = true; //fill detailed plots if at least one RPC match
191 
192  RPCDetId chId(chambMatch.id.rawId());
193 
194  int region = chId.region(); // barrel if 0, endcap if -/+ 1
195  int ring = chId.ring(); // means wheel in the barrel and ring in the endcap
196  int station = chId.station();
197  int sector = chId.sector();
198  int subsector = chId.subsector();
199  int layer = chId.layer();
200  int roll = chId.roll();
201 
202  reco::MuonRPCHitMatch closest_matchedRPCHit;
203  double smallestDx = 999.;
204  for (auto& seg : chambMatch.rpcMatches) {
205  float dx = std::abs(chambMatch.x - seg.x);
206 
207  if (dx < smallestDx) {
208  smallestDx = dx;
209  closest_matchedRPCHit = seg;
210  }
211  }
212 
213  RPC_stationMatching = RPC_stationMatching | (1 << (station - 1));
214 
215  probe_RPC_region.push_back(region);
216  probe_RPC_ring.push_back(ring);
217  probe_RPC_sta.push_back(station);
218  probe_RPC_sec.push_back(sector);
219  probe_RPC_lay.push_back(layer);
220  probe_RPC_sub.push_back(subsector);
221  probe_RPC_roll.push_back(roll);
222  probe_RPC_dx.push_back(smallestDx);
223  }
224  } else
225  continue;
226  } //loop over chamber matches
227 
228  //Fill detailed plots
229  if (m_detailedAnalysis && rpc_matched) {
230  m_histos.find("probeEta")->second->Fill((*muons).at(i).eta());
231  m_histos.find("probePhi")->second->Fill((*muons).at(i).phi());
232  m_histos.find("probeNumberOfMatchedStations")->second->Fill((*muons).at(i).numberOfMatchedStations());
233  m_histos.find("probePt")->second->Fill((*muons).at(i).pt());
234  }
235 
236  //Fill RPC variables
237  probe_coll_RPC_region.push_back(probe_RPC_region);
238  probe_coll_RPC_ring.push_back(probe_RPC_ring);
239  probe_coll_RPC_sta.push_back(probe_RPC_sta);
240  probe_coll_RPC_sec.push_back(probe_RPC_sec);
241  probe_coll_RPC_lay.push_back(probe_RPC_lay);
242  probe_coll_RPC_sub.push_back(probe_RPC_sub);
243  probe_coll_RPC_roll.push_back(probe_RPC_roll);
244  probe_coll_RPC_dx.push_back(probe_RPC_dx);
245  probe_coll_RPC_staMatch.push_back(RPC_stationMatching);
246  } //loop over probe collection
247 
248  //Loop over probes
249  for (unsigned i = 0; i < probe_indices.size(); ++i) {
250  uint8_t RPC_matchPatt = probe_coll_RPC_staMatch.at(i);
251 
252  //Loop over RPC matches
253  unsigned nRPC_matches = probe_coll_RPC_region.at(i).size();
254  for (unsigned j = 0; j < nRPC_matches; ++j) {
255  //RPC variables
256  int RPC_region = probe_coll_RPC_region.at(i).at(j);
257  int RPC_ring = probe_coll_RPC_ring.at(i).at(j);
258  int RPC_sta = probe_coll_RPC_sta.at(i).at(j);
259  int RPC_sec = probe_coll_RPC_sec.at(i).at(j);
260  int RPC_lay = probe_coll_RPC_lay.at(i).at(j);
261  int RPC_subsec = probe_coll_RPC_sub.at(i).at(j);
262  int RPC_roll = probe_coll_RPC_roll.at(i).at(j);
263  float RPC_dx = probe_coll_RPC_dx.at(i).at(j);
264 
265  //Fill RPC plots
266  if ((RPC_matchPatt & (1 << (RPC_sta - 1))) != 0) //avoids 0 station matching
267  {
268  if (RPC_dx < m_dxCut) {
269  //Barrel region
270  if (RPC_region == 0) {
271  int barrel_histo_xcoord = RPC_sec;
272  int barrel_histo_ycoord =
273  get_barrel_histo_ycoord(RPC_ring, RPC_sta, RPC_sec, RPC_lay, RPC_subsec, RPC_roll);
274 
275  std::string hName = std::string("RPC_nPassingProbePerRoll_Barrel_W") + std::to_string(RPC_ring);
276  m_histos.find(hName)->second->Fill(barrel_histo_xcoord, barrel_histo_ycoord);
277 
278  std::string hName_1D = std::string("RPC_nPassingProbePerRoll_Barrel_1D_W") + std::to_string(RPC_ring);
279  m_histos.find(hName_1D)->second->Fill(barrel_histo_ycoord);
280 
281  m_histos.find("RPC_nPassingProbe_Barrel_allCh_1D")->second->Fill((RPC_sta) + 4 * (RPC_ring + 2));
282  }
283  //Endcap region
284  else {
285  int endcap_histo_xcoord = (6 * (RPC_sec - 1)) + RPC_subsec;
286  int endcap_histo_ycoord = (3 * (RPC_ring - 2)) + RPC_roll;
287 
288  std::string hName =
289  std::string("RPC_nPassingProbePerRoll_Endcap_Sta") + std::to_string(RPC_sta * RPC_region);
290  m_histos.find(hName)->second->Fill(endcap_histo_xcoord, endcap_histo_ycoord);
291 
292  std::string hName_1D =
293  std::string("RPC_nPassingProbePerRoll_Endcap_1D_Sta") + std::to_string(RPC_sta * RPC_region);
294  m_histos.find(hName_1D)->second->Fill(endcap_histo_ycoord);
295 
296  m_histos.find("RPC_nPassingProbe_Endcap_allCh_1D")->second->Fill(RPC_region * RPC_sta);
297  }
298  } else {
299  //Barrel region
300  if (RPC_region == 0) {
301  int barrel_histo_xcoord = RPC_sec;
302  int barrel_histo_ycoord =
303  get_barrel_histo_ycoord(RPC_ring, RPC_sta, RPC_sec, RPC_lay, RPC_subsec, RPC_roll);
304 
305  std::string hName = std::string("RPC_nFailingProbePerRoll_Barrel_W") + std::to_string(RPC_ring);
306  m_histos.find(hName)->second->Fill(barrel_histo_xcoord, barrel_histo_ycoord);
307 
308  std::string hName_1D = std::string("RPC_nFailingProbePerRoll_Barrel_1D_W") + std::to_string(RPC_ring);
309  m_histos.find(hName_1D)->second->Fill(barrel_histo_ycoord);
310 
311  m_histos.find("RPC_nFailingProbe_Barrel_allCh_1D")->second->Fill((RPC_sta) + 4 * (RPC_ring + 2));
312  }
313  //Endcap region
314  else {
315  int endcap_histo_xcoord = (6 * (RPC_sec - 1)) + RPC_subsec;
316  int endcap_histo_ycoord = (3 * (RPC_ring - 2)) + RPC_roll;
317 
318  std::string hName =
319  std::string("RPC_nFailingProbePerRoll_Endcap_Sta") + std::to_string(RPC_sta * RPC_region);
320  m_histos.find(hName)->second->Fill(endcap_histo_xcoord, endcap_histo_ycoord);
321 
322  std::string hName_1D =
323  std::string("RPC_nFailingProbePerRoll_Endcap_1D_Sta") + std::to_string(RPC_sta * RPC_region);
324  m_histos.find(hName_1D)->second->Fill(endcap_histo_ycoord);
325 
326  m_histos.find("RPC_nFailingProbe_Endcap_allCh_1D")->second->Fill(RPC_region * RPC_sta);
327  }
328  }
329  }
330  }
331  }
332 }
const edm::EDGetTokenT< reco::MuonCollection > m_muToken
int get_barrel_histo_ycoord(int ring, int station, int sector, int layer, int subsector, int roll)
muons
the two sets of parameters below are mutually exclusive, depending if RECO or ALCARECO is used the us...
Definition: DiMuonV_cfg.py:214
static std::string to_string(const XMLCh *ch)
std::vector< std::vector< unsigned > > m_probeIndices
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::map< std::string, MonitorElement * > m_histos
void analyze(const edm::Event &event, const edm::EventSetup &context) override
Analyze.
static constexpr int RPC
Definition: MuonSubdetId.h:13
Definition: event.py:1

◆ bookEndcapHistos()

void RPCTnPEfficiencyTask::bookEndcapHistos ( DQMStore::IBooker iBooker,
int  stations,
std::string  folder = "" 
)
protected

Book endcap histograms.

Definition at line 494 of file RPCTnPEfficiencyTask.cc.

References ALCARECODTCalibSynchDQM_cff::baseDir, dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), printsummarytable::folder, mps_fire::i, LogTrace, BaseTnPEfficiencyTask::m_histos, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), dqm::impl::MonitorElement::setTitle(), relativeConstraints::station, AlCaHLTBitMon_QueryRunRegistry::string, to_string(), and topFolder().

Referenced by bookHistograms().

494  {
495  auto baseDir = topFolder() + folder + "/";
496  iBooker.setCurrentFolder(baseDir);
497 
498  LogTrace("DQMOffline|MuonDPG|RPCTnPEfficiencyTask")
499  << "[RPCTnPEfficiencyTask]: booking histos in " << baseDir << std::endl;
500 
501  auto hName_RPC_pass = std::string("RPC_nPassingProbePerRoll_Endcap_Sta") + std::to_string(station);
502  auto hName_RPC_fail = std::string("RPC_nFailingProbePerRoll_Endcap_Sta") + std::to_string(station);
503 
504  auto hName_RPC_pass_1D = std::string("RPC_nPassingProbePerRoll_Endcap_1D_Sta") + std::to_string(station);
505  auto hName_RPC_fail_1D = std::string("RPC_nFailingProbePerRoll_Endcap_1D_Sta") + std::to_string(station);
506 
507  MonitorElement* me_RPC_pass =
508  iBooker.book2D(hName_RPC_pass.c_str(), hName_RPC_pass.c_str(), 36, 0.5, 36.5, 6, 0.5, 6.5);
509  MonitorElement* me_RPC_fail =
510  iBooker.book2D(hName_RPC_fail.c_str(), hName_RPC_fail.c_str(), 36, 0.5, 36.5, 6, 0.5, 6.5);
511 
512  MonitorElement* me_RPC_pass_1D = iBooker.book1D(hName_RPC_pass_1D.c_str(), hName_RPC_pass_1D.c_str(), 6, 0.5, 6.5);
513  MonitorElement* me_RPC_fail_1D = iBooker.book1D(hName_RPC_fail_1D.c_str(), hName_RPC_fail_1D.c_str(), 6, 0.5, 6.5);
514 
515  me_RPC_pass->setBinLabel(1, "R2_A", 2);
516  me_RPC_pass->setBinLabel(2, "R2_B", 2);
517  me_RPC_pass->setBinLabel(3, "R2_C", 2);
518  me_RPC_pass->setBinLabel(4, "R3_A", 2);
519  me_RPC_pass->setBinLabel(5, "R3_B", 2);
520  me_RPC_pass->setBinLabel(6, "R3_C", 2);
521  for (int i = 1; i < 37; ++i) {
522  me_RPC_pass->setBinLabel(i, std::to_string(i), 1);
523  }
524  me_RPC_pass->setAxisTitle("Sector", 1);
525  me_RPC_pass->setAxisTitle("Number of passing probes", 3);
526  me_RPC_pass->setTitle("RE" + std::to_string(station));
527 
528  me_RPC_fail->setBinLabel(1, "R2_A", 2);
529  me_RPC_fail->setBinLabel(2, "R2_B", 2);
530  me_RPC_fail->setBinLabel(3, "R2_C", 2);
531  me_RPC_fail->setBinLabel(4, "R3_A", 2);
532  me_RPC_fail->setBinLabel(5, "R3_B", 2);
533  me_RPC_fail->setBinLabel(6, "R3_C", 2);
534  for (int i = 1; i < 37; ++i) {
535  me_RPC_fail->setBinLabel(i, std::to_string(i), 1);
536  }
537  me_RPC_fail->setAxisTitle("Sector", 1);
538  me_RPC_fail->setAxisTitle("Number of failing probes", 3);
539  me_RPC_fail->setTitle("RE" + std::to_string(station));
540 
541  me_RPC_pass_1D->setBinLabel(1, "R2_A", 1);
542  me_RPC_pass_1D->setBinLabel(2, "R2_B", 1);
543  me_RPC_pass_1D->setBinLabel(3, "R2_C", 1);
544  me_RPC_pass_1D->setBinLabel(4, "R3_A", 1);
545  me_RPC_pass_1D->setBinLabel(5, "R3_B", 1);
546  me_RPC_pass_1D->setBinLabel(6, "R3_C", 1);
547  me_RPC_pass_1D->setAxisTitle("Number of passing probes", 2);
548  me_RPC_pass_1D->setTitle("RE" + std::to_string(station));
549 
550  me_RPC_fail_1D->setBinLabel(1, "R2_A", 1);
551  me_RPC_fail_1D->setBinLabel(2, "R2_B", 1);
552  me_RPC_fail_1D->setBinLabel(3, "R2_C", 1);
553  me_RPC_fail_1D->setBinLabel(4, "R3_A", 1);
554  me_RPC_fail_1D->setBinLabel(5, "R3_B", 1);
555  me_RPC_fail_1D->setBinLabel(6, "R3_C", 1);
556  me_RPC_fail_1D->setAxisTitle("Number of failing probes", 2);
557  me_RPC_fail_1D->setTitle("RE" + std::to_string(station));
558 
559  m_histos[hName_RPC_pass] = me_RPC_pass;
560  m_histos[hName_RPC_fail] = me_RPC_fail;
561 
562  m_histos[hName_RPC_pass_1D] = me_RPC_pass_1D;
563  m_histos[hName_RPC_fail_1D] = me_RPC_fail_1D;
564 }
virtual void setTitle(const std::string &title)
set (ie. change) histogram/profile title
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
static std::string to_string(const XMLCh *ch)
#define LogTrace(id)
std::string topFolder() const override
Return the top folder.
std::map< std::string, MonitorElement * > m_histos
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
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
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

◆ bookHistograms()

void RPCTnPEfficiencyTask::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  run,
edm::EventSetup const &  context 
)
overrideprotectedvirtual

Reimplemented from BaseTnPEfficiencyTask.

Definition at line 49 of file RPCTnPEfficiencyTask.cc.

References ALCARECODTCalibSynchDQM_cff::baseDir, dqm::implementation::IBooker::book1D(), bookEndcapHistos(), BaseTnPEfficiencyTask::bookHistograms(), bookWheelHistos(), visDQMUpload::context, LogTrace, BaseTnPEfficiencyTask::m_histos, writedatasetfile::run, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), relativeConstraints::station, topFolder(), and makeMuonMisalignmentScenario::wheel.

51  {
53 
54  LogTrace("DQMOffline|MuonDPG|RPCTnPEfficiencyTask") << "[RPCTnPEfficiencyTask]: bookHistograms" << std::endl;
55 
56  for (int wheel = -2; wheel <= 2; ++wheel) {
57  bookWheelHistos(iBooker, wheel, "Task");
58  }
59 
60  for (int station = -4; station <= 4; ++station) {
61  if (station == 0)
62  continue;
63  bookEndcapHistos(iBooker, station, "Task");
64  }
65 
66  auto baseDir = topFolder() + "Task/";
67  iBooker.setCurrentFolder(baseDir);
68 
69  MonitorElement* me_RPC_barrel_pass_allCh_1D =
70  iBooker.book1D("RPC_nPassingProbe_Barrel_allCh_1D", "RPC_nPassingProbe_Barrel_allCh_1D", 20, 0.5, 20.5);
71  MonitorElement* me_RPC_barrel_fail_allCh_1D =
72  iBooker.book1D("RPC_nFailingProbe_Barrel_allCh_1D", "RPC_nFailingProbe_Barrel_allCh_1D", 20, 0.5, 20.5);
73 
74  MonitorElement* me_RPC_endcap_pass_allCh_1D =
75  iBooker.book1D("RPC_nPassingProbe_Endcap_allCh_1D", "RPC_nPassingProbe_Endcap_allCh_1D", 9, -4., 5.);
76  MonitorElement* me_RPC_endcap_fail_allCh_1D =
77  iBooker.book1D("RPC_nFailingProbe_Endcap_allCh_1D", "RPC_nFailingProbe_Endcap_allCh_1D", 9, -4., 5.);
78 
79  me_RPC_barrel_pass_allCh_1D->setBinLabel(1, "RB1/YB-2", 1);
80  me_RPC_barrel_pass_allCh_1D->setBinLabel(2, "RB2/YB-2", 1);
81  me_RPC_barrel_pass_allCh_1D->setBinLabel(3, "RB3/YB-2", 1);
82  me_RPC_barrel_pass_allCh_1D->setBinLabel(4, "RB4/YB-2", 1);
83  me_RPC_barrel_pass_allCh_1D->setBinLabel(5, "RB1/YB-1", 1);
84  me_RPC_barrel_pass_allCh_1D->setBinLabel(6, "RB2/YB-1", 1);
85  me_RPC_barrel_pass_allCh_1D->setBinLabel(7, "RB3/YB-1", 1);
86  me_RPC_barrel_pass_allCh_1D->setBinLabel(8, "RB4/YB-1", 1);
87  me_RPC_barrel_pass_allCh_1D->setBinLabel(9, "RB1/YB0", 1);
88  me_RPC_barrel_pass_allCh_1D->setBinLabel(10, "RB2/YB0", 1);
89  me_RPC_barrel_pass_allCh_1D->setBinLabel(11, "RB3/YB0", 1);
90  me_RPC_barrel_pass_allCh_1D->setBinLabel(12, "RB4/YB0", 1);
91  me_RPC_barrel_pass_allCh_1D->setBinLabel(13, "RB1/YB1", 1);
92  me_RPC_barrel_pass_allCh_1D->setBinLabel(14, "RB2/YB1", 1);
93  me_RPC_barrel_pass_allCh_1D->setBinLabel(15, "RB3/YB1", 1);
94  me_RPC_barrel_pass_allCh_1D->setBinLabel(16, "RB4/YB1", 1);
95  me_RPC_barrel_pass_allCh_1D->setBinLabel(17, "RB1/YB2", 1);
96  me_RPC_barrel_pass_allCh_1D->setBinLabel(18, "RB2/YB2", 1);
97  me_RPC_barrel_pass_allCh_1D->setBinLabel(19, "RB3/YB2", 1);
98  me_RPC_barrel_pass_allCh_1D->setBinLabel(20, "RB4/YB2", 1);
99  me_RPC_barrel_pass_allCh_1D->setAxisTitle("Number of passing probes", 2);
100 
101  me_RPC_barrel_fail_allCh_1D->setBinLabel(1, "RB1/YB-2", 1);
102  me_RPC_barrel_fail_allCh_1D->setBinLabel(2, "RB2/YB-2", 1);
103  me_RPC_barrel_fail_allCh_1D->setBinLabel(3, "RB3/YB-2", 1);
104  me_RPC_barrel_fail_allCh_1D->setBinLabel(4, "RB4/YB-2", 1);
105  me_RPC_barrel_fail_allCh_1D->setBinLabel(5, "RB1/YB-1", 1);
106  me_RPC_barrel_fail_allCh_1D->setBinLabel(6, "RB2/YB-1", 1);
107  me_RPC_barrel_fail_allCh_1D->setBinLabel(7, "RB3/YB-1", 1);
108  me_RPC_barrel_fail_allCh_1D->setBinLabel(8, "RB4/YB-1", 1);
109  me_RPC_barrel_fail_allCh_1D->setBinLabel(9, "RB1/YB0", 1);
110  me_RPC_barrel_fail_allCh_1D->setBinLabel(10, "RB2/YB0", 1);
111  me_RPC_barrel_fail_allCh_1D->setBinLabel(11, "RB3/YB0", 1);
112  me_RPC_barrel_fail_allCh_1D->setBinLabel(12, "RB4/YB0", 1);
113  me_RPC_barrel_fail_allCh_1D->setBinLabel(13, "RB1/YB1", 1);
114  me_RPC_barrel_fail_allCh_1D->setBinLabel(14, "RB2/YB1", 1);
115  me_RPC_barrel_fail_allCh_1D->setBinLabel(15, "RB3/YB1", 1);
116  me_RPC_barrel_fail_allCh_1D->setBinLabel(16, "RB4/YB1", 1);
117  me_RPC_barrel_fail_allCh_1D->setBinLabel(17, "RB1/YB2", 1);
118  me_RPC_barrel_fail_allCh_1D->setBinLabel(18, "RB2/YB2", 1);
119  me_RPC_barrel_fail_allCh_1D->setBinLabel(19, "RB3/YB2", 1);
120  me_RPC_barrel_fail_allCh_1D->setBinLabel(20, "RB4/YB2", 1);
121  me_RPC_barrel_fail_allCh_1D->setAxisTitle("Number of failing probes", 2);
122 
123  me_RPC_endcap_pass_allCh_1D->setBinLabel(1, "RE-4", 1);
124  me_RPC_endcap_pass_allCh_1D->setBinLabel(2, "RE-3", 1);
125  me_RPC_endcap_pass_allCh_1D->setBinLabel(3, "RE-2", 1);
126  me_RPC_endcap_pass_allCh_1D->setBinLabel(4, "RE-1", 1);
127  me_RPC_endcap_pass_allCh_1D->setBinLabel(6, "RE1", 1);
128  me_RPC_endcap_pass_allCh_1D->setBinLabel(7, "RE2", 1);
129  me_RPC_endcap_pass_allCh_1D->setBinLabel(8, "RE3", 1);
130  me_RPC_endcap_pass_allCh_1D->setBinLabel(9, "RE4", 1);
131  me_RPC_endcap_pass_allCh_1D->setAxisTitle("Number of passing probes", 2);
132 
133  me_RPC_endcap_fail_allCh_1D->setBinLabel(1, "RE-4", 1);
134  me_RPC_endcap_fail_allCh_1D->setBinLabel(2, "RE-3", 1);
135  me_RPC_endcap_fail_allCh_1D->setBinLabel(3, "RE-2", 1);
136  me_RPC_endcap_fail_allCh_1D->setBinLabel(4, "RE-1", 1);
137  me_RPC_endcap_fail_allCh_1D->setBinLabel(6, "RE1", 1);
138  me_RPC_endcap_fail_allCh_1D->setBinLabel(7, "RE2", 1);
139  me_RPC_endcap_fail_allCh_1D->setBinLabel(8, "RE3", 1);
140  me_RPC_endcap_fail_allCh_1D->setBinLabel(9, "RE4", 1);
141  me_RPC_endcap_fail_allCh_1D->setAxisTitle("Number of failing probes", 2);
142 
143  m_histos["RPC_nPassingProbe_Barrel_allCh_1D"] = me_RPC_barrel_pass_allCh_1D;
144  m_histos["RPC_nFailingProbe_Barrel_allCh_1D"] = me_RPC_barrel_fail_allCh_1D;
145 
146  m_histos["RPC_nPassingProbe_Endcap_allCh_1D"] = me_RPC_endcap_pass_allCh_1D;
147  m_histos["RPC_nFailingProbe_Endcap_allCh_1D"] = me_RPC_endcap_fail_allCh_1D;
148 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
#define LogTrace(id)
void bookEndcapHistos(DQMStore::IBooker &iBooker, int stations, std::string folder="")
Book endcap histograms.
std::string topFolder() const override
Return the top folder.
std::map< std::string, MonitorElement * > m_histos
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void bookHistograms(DQMStore::IBooker &iBooker, edm::Run const &run, edm::EventSetup const &context) override
void bookWheelHistos(DQMStore::IBooker &iBooker, int wheel, std::string folder="")
Book wheel granularity histograms.
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

◆ bookWheelHistos()

void RPCTnPEfficiencyTask::bookWheelHistos ( DQMStore::IBooker iBooker,
int  wheel,
std::string  folder = "" 
)
protected

Book wheel granularity histograms.

Definition at line 334 of file RPCTnPEfficiencyTask.cc.

References funct::abs(), ALCARECODTCalibSynchDQM_cff::baseDir, dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), printsummarytable::folder, mps_fire::i, LogTrace, BaseTnPEfficiencyTask::m_histos, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, to_string(), topFolder(), and makeMuonMisalignmentScenario::wheel.

Referenced by bookHistograms().

334  {
335  auto baseDir = topFolder() + folder + "/";
336  iBooker.setCurrentFolder(baseDir);
337 
338  LogTrace("DQMOffline|MuonDPG|RPCTnPEfficiencyTask")
339  << "[RPCTnPEfficiencyTask]: booking histos in " << baseDir << std::endl;
340 
341  auto hName_RPC_pass = std::string("RPC_nPassingProbePerRoll_Barrel_W") + std::to_string(wheel);
342  auto hName_RPC_fail = std::string("RPC_nFailingProbePerRoll_Barrel_W") + std::to_string(wheel);
343 
344  auto hName_RPC_pass_1D = std::string("RPC_nPassingProbePerRoll_Barrel_1D_W") + std::to_string(wheel);
345  auto hName_RPC_fail_1D = std::string("RPC_nFailingProbePerRoll_Barrel_1D_W") + std::to_string(wheel);
346 
347  MonitorElement* me_RPC_pass =
348  iBooker.book2D(hName_RPC_pass.c_str(), hName_RPC_pass.c_str(), 12, 0.5, 12.5, 21, 0., 21.5);
349  MonitorElement* me_RPC_fail =
350  iBooker.book2D(hName_RPC_fail.c_str(), hName_RPC_fail.c_str(), 12, 0.5, 12.5, 21, 0., 21.5);
351 
352  MonitorElement* me_RPC_pass_1D = iBooker.book1D(hName_RPC_pass_1D.c_str(), hName_RPC_pass_1D.c_str(), 21, 0., 21.5);
353  MonitorElement* me_RPC_fail_1D = iBooker.book1D(hName_RPC_fail_1D.c_str(), hName_RPC_fail_1D.c_str(), 21, 0., 21.5);
354 
355  me_RPC_pass->setBinLabel(1, "RB1in B", 2);
356  me_RPC_pass->setBinLabel(2, "RB1in F", 2);
357  me_RPC_pass->setBinLabel(3, "RB1out B", 2);
358  me_RPC_pass->setBinLabel(4, "RB1out F", 2);
359  if (std::abs(wheel) < 2) {
360  me_RPC_pass->setBinLabel(5, "RB2in B", 2);
361  me_RPC_pass->setBinLabel(6, "RB2in M", 2);
362  me_RPC_pass->setBinLabel(7, "RB2in F", 2);
363  me_RPC_pass->setBinLabel(8, "RB2out B", 2);
364  me_RPC_pass->setBinLabel(9, "RB2out F", 2);
365  } else {
366  me_RPC_pass->setBinLabel(5, "RB2in B", 2);
367  me_RPC_pass->setBinLabel(6, "RB2in F", 2);
368  me_RPC_pass->setBinLabel(7, "RB2out B", 2);
369  me_RPC_pass->setBinLabel(8, "RB2out M", 2);
370  me_RPC_pass->setBinLabel(9, "RB2out F", 2);
371  }
372  me_RPC_pass->setBinLabel(10, "RB3- B", 2);
373  me_RPC_pass->setBinLabel(11, "RB3- F", 2);
374  me_RPC_pass->setBinLabel(12, "RB3+ B", 2);
375  me_RPC_pass->setBinLabel(13, "RB3+ F", 2);
376  me_RPC_pass->setBinLabel(14, "RB4- B", 2);
377  me_RPC_pass->setBinLabel(15, "RB4- F", 2);
378  me_RPC_pass->setBinLabel(16, "RB4+ B", 2);
379  me_RPC_pass->setBinLabel(17, "RB4+ F", 2);
380  me_RPC_pass->setBinLabel(18, "RB4-- B", 2);
381  me_RPC_pass->setBinLabel(19, "RB4-- F", 2);
382  me_RPC_pass->setBinLabel(20, "RB4++ B", 2);
383  me_RPC_pass->setBinLabel(21, "RB4++ F", 2);
384  for (int i = 1; i < 13; ++i) {
385  me_RPC_pass->setBinLabel(i, std::to_string(i), 1);
386  }
387  me_RPC_pass->setAxisTitle("Sector", 1);
388  me_RPC_pass->setAxisTitle("Number of passing probes", 3);
389 
390  me_RPC_fail->setBinLabel(1, "RB1in B", 2);
391  me_RPC_fail->setBinLabel(2, "RB1in F", 2);
392  me_RPC_fail->setBinLabel(3, "RB1out B", 2);
393  me_RPC_fail->setBinLabel(4, "RB1out F", 2);
394  if (std::abs(wheel) < 2) {
395  me_RPC_fail->setBinLabel(5, "RB2in B", 2);
396  me_RPC_fail->setBinLabel(6, "RB2in M", 2);
397  me_RPC_fail->setBinLabel(7, "RB2in F", 2);
398  me_RPC_fail->setBinLabel(8, "RB2out B", 2);
399  me_RPC_fail->setBinLabel(9, "RB2out F", 2);
400  } else {
401  me_RPC_fail->setBinLabel(5, "RB2in B", 2);
402  me_RPC_fail->setBinLabel(6, "RB2in F", 2);
403  me_RPC_fail->setBinLabel(7, "RB2out B", 2);
404  me_RPC_fail->setBinLabel(8, "RB2out M", 2);
405  me_RPC_fail->setBinLabel(9, "RB2out F", 2);
406  }
407  me_RPC_fail->setBinLabel(10, "RB3- B", 2);
408  me_RPC_fail->setBinLabel(11, "RB3- F", 2);
409  me_RPC_fail->setBinLabel(12, "RB3+ B", 2);
410  me_RPC_fail->setBinLabel(13, "RB3+ F", 2);
411  me_RPC_fail->setBinLabel(14, "RB4- B", 2);
412  me_RPC_fail->setBinLabel(15, "RB4- F", 2);
413  me_RPC_fail->setBinLabel(16, "RB4+ B", 2);
414  me_RPC_fail->setBinLabel(17, "RB4+ F", 2);
415  me_RPC_fail->setBinLabel(18, "RB4-- B", 2);
416  me_RPC_fail->setBinLabel(19, "RB4-- F", 2);
417  me_RPC_fail->setBinLabel(20, "RB4++ B", 2);
418  me_RPC_fail->setBinLabel(21, "RB4++ F", 2);
419  for (int i = 1; i < 13; ++i) {
420  me_RPC_fail->setBinLabel(i, std::to_string(i), 1);
421  }
422  me_RPC_fail->setAxisTitle("Sector", 1);
423  me_RPC_fail->setAxisTitle("Number of failing probes", 3);
424 
425  me_RPC_pass_1D->setBinLabel(1, "RB1in B", 1);
426  me_RPC_pass_1D->setBinLabel(2, "RB1in F", 1);
427  me_RPC_pass_1D->setBinLabel(3, "RB1out B", 1);
428  me_RPC_pass_1D->setBinLabel(4, "RB1out F", 1);
429  if (std::abs(wheel) < 2) {
430  me_RPC_pass_1D->setBinLabel(5, "RB2in B", 1);
431  me_RPC_pass_1D->setBinLabel(6, "RB2in M", 1);
432  me_RPC_pass_1D->setBinLabel(7, "RB2in F", 1);
433  me_RPC_pass_1D->setBinLabel(8, "RB2out B", 1);
434  me_RPC_pass_1D->setBinLabel(9, "RB2out F", 1);
435  } else {
436  me_RPC_pass_1D->setBinLabel(5, "RB2in B", 1);
437  me_RPC_pass_1D->setBinLabel(6, "RB2in F", 1);
438  me_RPC_pass_1D->setBinLabel(7, "RB2out B", 1);
439  me_RPC_pass_1D->setBinLabel(8, "RB2out M", 1);
440  me_RPC_pass_1D->setBinLabel(9, "RB2out F", 1);
441  }
442  me_RPC_pass_1D->setBinLabel(10, "RB3- B", 1);
443  me_RPC_pass_1D->setBinLabel(11, "RB3- F", 1);
444  me_RPC_pass_1D->setBinLabel(12, "RB3+ B", 1);
445  me_RPC_pass_1D->setBinLabel(13, "RB3+ F", 1);
446  me_RPC_pass_1D->setBinLabel(14, "RB4- B", 1);
447  me_RPC_pass_1D->setBinLabel(15, "RB4- F", 1);
448  me_RPC_pass_1D->setBinLabel(16, "RB4+ B", 1);
449  me_RPC_pass_1D->setBinLabel(17, "RB4+ F", 1);
450  me_RPC_pass_1D->setBinLabel(18, "RB4-- B", 1);
451  me_RPC_pass_1D->setBinLabel(19, "RB4-- F", 1);
452  me_RPC_pass_1D->setBinLabel(20, "RB4++ B", 1);
453  me_RPC_pass_1D->setBinLabel(21, "RB4++ F", 1);
454  me_RPC_pass->setAxisTitle("Number of passing probes", 2);
455 
456  me_RPC_fail_1D->setBinLabel(1, "RB1in B", 1);
457  me_RPC_fail_1D->setBinLabel(2, "RB1in F", 1);
458  me_RPC_fail_1D->setBinLabel(3, "RB1out B", 1);
459  me_RPC_fail_1D->setBinLabel(4, "RB1out F", 1);
460  if (std::abs(wheel) < 2) {
461  me_RPC_fail_1D->setBinLabel(5, "RB2in B", 1);
462  me_RPC_fail_1D->setBinLabel(6, "RB2in M", 1);
463  me_RPC_fail_1D->setBinLabel(7, "RB2in F", 1);
464  me_RPC_fail_1D->setBinLabel(8, "RB2out B", 1);
465  me_RPC_fail_1D->setBinLabel(9, "RB2out F", 1);
466  } else {
467  me_RPC_fail_1D->setBinLabel(5, "RB2in B", 1);
468  me_RPC_fail_1D->setBinLabel(6, "RB2in F", 1);
469  me_RPC_fail_1D->setBinLabel(7, "RB2out B", 1);
470  me_RPC_fail_1D->setBinLabel(8, "RB2out M", 1);
471  me_RPC_fail_1D->setBinLabel(9, "RB2out F", 1);
472  }
473  me_RPC_fail_1D->setBinLabel(10, "RB3- B", 1);
474  me_RPC_fail_1D->setBinLabel(11, "RB3- F", 1);
475  me_RPC_fail_1D->setBinLabel(12, "RB3+ B", 1);
476  me_RPC_fail_1D->setBinLabel(13, "RB3+ F", 1);
477  me_RPC_fail_1D->setBinLabel(14, "RB4- B", 1);
478  me_RPC_fail_1D->setBinLabel(15, "RB4- F", 1);
479  me_RPC_fail_1D->setBinLabel(16, "RB4+ B", 1);
480  me_RPC_fail_1D->setBinLabel(17, "RB4+ F", 1);
481  me_RPC_fail_1D->setBinLabel(18, "RB4-- B", 1);
482  me_RPC_fail_1D->setBinLabel(19, "RB4-- F", 1);
483  me_RPC_fail_1D->setBinLabel(20, "RB4++ B", 1);
484  me_RPC_fail_1D->setBinLabel(21, "RB4++ F", 1);
485  me_RPC_fail_1D->setAxisTitle("Number of failing probes", 2);
486 
487  m_histos[hName_RPC_pass] = me_RPC_pass;
488  m_histos[hName_RPC_fail] = me_RPC_fail;
489 
490  m_histos[hName_RPC_pass_1D] = me_RPC_pass_1D;
491  m_histos[hName_RPC_fail_1D] = me_RPC_fail_1D;
492 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
static std::string to_string(const XMLCh *ch)
#define LogTrace(id)
std::string topFolder() const override
Return the top folder.
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::map< std::string, MonitorElement * > m_histos
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
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
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)

◆ get_barrel_histo_ycoord()

int RPCTnPEfficiencyTask::get_barrel_histo_ycoord ( int  ring,
int  station,
int  sector,
int  layer,
int  subsector,
int  roll 
)
protected

Definition at line 566 of file RPCTnPEfficiencyTask.cc.

References a, funct::abs(), nano_mu_digi_cff::layer, relativeConstraints::ring, nano_mu_digi_cff::roll, nano_mu_digi_cff::sector, relativeConstraints::station, and nano_mu_digi_cff::subsector.

Referenced by analyze().

567  {
568  int ycoord;
569 
570  if (station < 3) {
571  //There are three rolls in RB2in for wheel=-1,0,+1 and in RB2out for wheel=-2,+2
572  bool three_rolls = station == 2 && ((std::abs(ring) > 1 && layer == 2) || (std::abs(ring) < 2 && layer == 1));
573 
574  int layer_roll;
575 
576  if (!three_rolls) {
577  roll = roll > 1 ? 2 : 1;
578  int a = station == 2 && std::abs(ring) < 2 && layer == 2 ? 3 : 2;
579  layer_roll = (a * (layer - 1)) + roll;
580  } else {
581  layer_roll = (2 * (layer - 1)) + roll;
582  }
583 
584  ycoord = (4 * (station - 1)) + layer_roll;
585  } else if (station == 3) {
586  roll = roll > 1 ? 2 : 1;
587  ycoord = 9 + (4 * (station - 3)) + (2 * (subsector - 1)) + roll;
588  } else {
589  int my_subsector = subsector;
590  //The numbering scheme of subsector in sector 4
591  //of station 4 does not match the bins order in the plot:
592  //_____SUBSECTOR_____|_______BIN_ORDERING_____
593  // ++ --> subsector 4| RB4++ --> my_subsector 4
594  // + --> subsector 3| RB4-- --> my_subsector 3
595  // - --> subsector 2| RB4+ --> my_subsector 2
596  // -- --> subsector 1| RB4- --> my_subsector 1
597 
598  if (sector == 4) {
599  switch (subsector) {
600  case 1:
601  my_subsector = 3;
602  break;
603  case 2:
604  my_subsector = 1;
605  break;
606  case 3:
607  my_subsector = 2;
608  break;
609  case 4:
610  my_subsector = 4;
611  break;
612  }
613  }
614  roll = roll > 1 ? 2 : 1;
615  ycoord = 9 + (4 * (station - 3)) + (2 * (my_subsector - 1)) + roll;
616  }
617 
618  return ycoord;
619 }
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double a
Definition: hdecay.h:121

◆ topFolder()

std::string RPCTnPEfficiencyTask::topFolder ( ) const
overrideprotectedvirtual

Return the top folder.

Implements BaseTnPEfficiencyTask.

Definition at line 621 of file RPCTnPEfficiencyTask.cc.

Referenced by bookEndcapHistos(), bookHistograms(), and bookWheelHistos().

621 { return "RPC/Segment_TnP/"; };