CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
GEMSimHitValidation Class Reference

#include <GEMSimHitValidation.h>

Inheritance diagram for GEMSimHitValidation:
GEMBaseValidation DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 GEMSimHitValidation (const edm::ParameterSet &)
 
 ~GEMSimHitValidation () override
 
- Public Member Functions inherited from GEMBaseValidation
 GEMBaseValidation (const edm::ParameterSet &, std::string)
 
 ~GEMBaseValidation () override=0
 
- 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
 
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
 

Private Member Functions

std::tuple< Double_t, Double_t > getTOFRange (Int_t station_id)
 

Private Attributes

edm::ESGetToken< GEMGeometry,
MuonGeometryRecord
geomToken_
 
edm::ESGetToken< GEMGeometry,
MuonGeometryRecord
geomTokenBeginRun_
 
const Float_t kEnergyCF_ = 1e6f
 
MEMap3Ids me_detail_eloss_
 
MEMap3Ids me_detail_eloss_mu_
 
MEMap2Ids me_detail_occ_det_
 
MEMap2Ids me_detail_occ_det_mu_
 
MEMap3Ids me_detail_occ_xy_
 
MEMap1Ids me_detail_occ_zr_
 
MEMap3Ids me_detail_tof_
 
MEMap3Ids me_detail_tof_mu_
 
MEMap1Ids me_eloss_mu_
 
MEMap1Ids me_eloss_others_
 
MEMap3Ids me_occ_eta_mu_
 
MEMap3Ids me_occ_phi_mu_
 
MEMap3Ids me_occ_pid_
 
MEMap2Ids me_tof_mu_
 
MEMap2Ids me_tof_others_
 
edm::EDGetTokenT
< edm::PSimHitContainer
simhit_token_
 
std::vector< Double_t > tof_range_
 

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
< DQMEDAnalyzerGlobalCache
initializeGlobalCache (edm::ParameterSet const &)
 
- Protected Member Functions inherited from GEMBaseValidation
template<typename T >
dqm::impl::MonitorElementbookDetectorOccupancy (DQMStore::IBooker &booker, const T &key, const GEMStation *station, const char *name_prfix, const char *title_prefix)
 
template<typename T >
dqm::impl::MonitorElementbookHist1D (DQMStore::IBooker &booker, const T &key, const char *name, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, const char *x_title="", const char *y_title="Entries")
 
template<typename T >
dqm::impl::MonitorElementbookHist2D (DQMStore::IBooker &booker, const T &key, const char *name, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, Int_t nbinsy, Double_t ylow, Double_t yup, const char *x_title="", const char *y_title="")
 
template<typename T >
dqm::impl::MonitorElementbookPIDHist (DQMStore::IBooker &booker, const T &key, const char *name, const char *title)
 
template<typename T >
dqm::impl::MonitorElementbookPIDHist (DQMStore::IBooker &booker, const T &key, Int_t ieta, const char *name, const char *title)
 
template<typename T >
dqm::impl::MonitorElementbookPolarOccupancy (DQMStore::IBooker &booker, const T &key, const char *name_prefix, const char *title_prefix)
 
template<typename T >
dqm::impl::MonitorElementbookXYOccupancy (DQMStore::IBooker &booker, const T &key, const char *name_prefix, const char *title_prefix)
 
dqm::impl::MonitorElementbookZROccupancy (DQMStore::IBooker &booker, Int_t region_id, const char *name_prfix, const char *title_prefix)
 
template<typename T >
dqm::impl::MonitorElementbookZROccupancy (DQMStore::IBooker &booker, const T &key, const char *name_prfix, const char *title_prefix)
 
Int_t getDetOccBinX (Int_t num_layers, Int_t chamber_id, Int_t layer_id)
 
Int_t getPidIdx (Int_t pid)
 
Bool_t isMuonSimHit (const PSimHit &)
 
Float_t toDegree (Float_t radian)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 
- Protected Attributes inherited from GEMBaseValidation
Bool_t detail_plot_
 
std::vector< Double_t > eta_range_
 
edm::ESGetToken< GEMGeometry,
MuonGeometryRecord
geomToken_
 
edm::ESGetToken< GEMGeometry,
MuonGeometryRecord
geomTokenBeginRun_
 
const std::string kLogCategory_
 
const Int_t kMuonPDGId_ = 13
 
std::vector< Int_t > pid_list_
 
Int_t xy_occ_num_bins_
 
std::vector< Int_t > zr_occ_num_bins_
 
std::vector< Double_t > zr_occ_range_
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 11 of file GEMSimHitValidation.h.

Constructor & Destructor Documentation

GEMSimHitValidation::GEMSimHitValidation ( const edm::ParameterSet pset)
explicit

Definition at line 5 of file GEMSimHitValidation.cc.

References geomToken_, geomTokenBeginRun_, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterSet(), edm::ParameterSet::getUntrackedParameter(), simhit_token_, and tof_range_.

6  : GEMBaseValidation(pset, "GEMSimHitValidation") {
7  const auto& simhit_pset = pset.getParameterSet("gemSimHit");
8  const auto& simhit_tag = simhit_pset.getParameter<edm::InputTag>("inputTag");
9  simhit_token_ = consumes<edm::PSimHitContainer>(simhit_tag);
10 
11  tof_range_ = pset.getUntrackedParameter<std::vector<Double_t> >("TOFRange");
12  geomToken_ = esConsumes<GEMGeometry, MuonGeometryRecord>();
13  geomTokenBeginRun_ = esConsumes<GEMGeometry, MuonGeometryRecord, edm::Transition::BeginRun>();
14 }
T getUntrackedParameter(std::string const &, T const &) const
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
edm::EDGetTokenT< edm::PSimHitContainer > simhit_token_
std::vector< Double_t > tof_range_
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomTokenBeginRun_
ParameterSet const & getParameterSet(std::string const &) const
GEMBaseValidation(const edm::ParameterSet &, std::string)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
GEMSimHitValidation::~GEMSimHitValidation ( )
override

Definition at line 16 of file GEMSimHitValidation.cc.

16 {}

Member Function Documentation

void GEMSimHitValidation::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
overridevirtual

Implements GEMBaseValidation.

Definition at line 182 of file GEMSimHitValidation.cc.

References GEMBaseValidation::detail_plot_, PV3DBase< T, PVType, FrameType >::eta(), geomToken_, edm::EventSetup::getData(), GEMBaseValidation::getDetOccBinX(), GEMBaseValidation::getPidIdx(), GEMGeometry::idToDet(), GEMBaseValidation::isMuonSimHit(), edm::HandleBase::isValid(), kEnergyCF_, GEMBaseValidation::kLogCategory_, me_detail_eloss_, me_detail_eloss_mu_, me_detail_occ_det_, me_detail_occ_det_mu_, me_detail_occ_xy_, me_detail_occ_zr_, me_detail_tof_, me_detail_tof_mu_, me_eloss_mu_, me_eloss_others_, me_occ_eta_mu_, me_occ_phi_mu_, me_occ_pid_, me_tof_mu_, me_tof_others_, PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), edm::Handle< T >::product(), simhit_token_, GeomDet::surface(), GEMBaseValidation::toDegree(), Surface::toGlobal(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

182  {
183  const GEMGeometry* gem = &setup.getData(geomToken_);
184 
185  edm::Handle<edm::PSimHitContainer> simhit_container;
186  event.getByToken(simhit_token_, simhit_container);
187  if (not simhit_container.isValid()) {
188  edm::LogError(kLogCategory_) << "Cannot get GEMHits by Token simhitLabel" << std::endl;
189  return;
190  }
191 
192  for (const auto& simhit : *simhit_container.product()) {
193  const GEMDetId gemid(simhit.detUnitId());
194 
195  if (gem->idToDet(gemid) == nullptr) {
196  edm::LogError(kLogCategory_) << "SimHit did not matched with GEM Geometry." << std::endl;
197  continue;
198  }
199 
200  Int_t region_id = gemid.region();
201  Int_t station_id = gemid.station();
202  Int_t layer_id = gemid.layer();
203  Int_t chamber_id = gemid.chamber();
204  Int_t ieta = gemid.ieta();
205  Int_t num_layers = gemid.nlayers();
206 
207  ME2IdsKey key2{region_id, station_id};
208  ME3IdsKey key3{region_id, station_id, layer_id};
209 
210  GlobalPoint&& simhit_global_pos = gem->idToDet(gemid)->surface().toGlobal(simhit.localPosition());
211 
212  Float_t simhit_g_r = simhit_global_pos.perp();
213  Float_t simhit_g_x = simhit_global_pos.x();
214  Float_t simhit_g_y = simhit_global_pos.y();
215  Float_t simhit_g_abs_z = std::fabs(simhit_global_pos.z());
216  Float_t simhit_g_eta = std::fabs(simhit_global_pos.eta());
217  Float_t simhit_g_phi = toDegree(simhit_global_pos.phi());
218 
219  Float_t energy_loss = kEnergyCF_ * simhit.energyLoss();
220  energy_loss = energy_loss > 10 ? 9.9 : energy_loss;
221  Float_t tof = simhit.timeOfFlight();
222  Int_t pid = simhit.particleType();
223  Int_t pid_idx = getPidIdx(pid);
224 
225  // NOTE Fill MonitorElement
226  Int_t bin_x = getDetOccBinX(num_layers, chamber_id, layer_id);
227 
228  bool is_muon_simhit = isMuonSimHit(simhit);
229  if (is_muon_simhit) {
230  me_tof_mu_[key2]->Fill(tof);
231  me_eloss_mu_[station_id]->Fill(energy_loss);
232  me_occ_eta_mu_[key3]->Fill(simhit_g_eta);
233  me_occ_phi_mu_[key3]->Fill(simhit_g_phi);
234  } else {
235  me_tof_others_[key2]->Fill(tof);
236  me_eloss_others_[station_id]->Fill(energy_loss);
237  }
238 
239  me_occ_pid_[key3]->Fill(pid_idx);
240 
241  if (detail_plot_) {
242  me_detail_tof_[key3]->Fill(tof);
243  me_detail_eloss_[key3]->Fill(energy_loss);
244 
245  me_detail_occ_zr_[region_id]->Fill(simhit_g_abs_z, simhit_g_r);
246  me_detail_occ_det_[key2]->Fill(bin_x, ieta);
247  me_detail_occ_xy_[key3]->Fill(simhit_g_x, simhit_g_y);
248 
249  if (is_muon_simhit) {
250  me_detail_tof_mu_[key3]->Fill(tof);
251  me_detail_eloss_mu_[key3]->Fill(energy_loss);
252  me_detail_occ_det_mu_[key2]->Fill(bin_x, ieta);
253  }
254 
255  } // detail_plot
256  } // simhit loop
257 }
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
T perp() const
Definition: PV3DBase.h:69
Bool_t isMuonSimHit(const PSimHit &)
const GeomDet * idToDet(DetId) const override
Definition: GEMGeometry.cc:25
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
T y() const
Definition: PV3DBase.h:60
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomToken_
Log< level::Error, false > LogError
edm::EDGetTokenT< edm::PSimHitContainer > simhit_token_
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
bool getData(T &iHolder) const
Definition: EventSetup.h:128
T z() const
Definition: PV3DBase.h:61
Int_t getPidIdx(Int_t pid)
bool isValid() const
Definition: HandleBase.h:70
T const * product() const
Definition: Handle.h:70
T eta() const
Definition: PV3DBase.h:73
std::tuple< Int_t, Int_t > ME2IdsKey
Float_t toDegree(Float_t radian)
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey
Int_t getDetOccBinX(Int_t num_layers, Int_t chamber_id, Int_t layer_id)
T x() const
Definition: PV3DBase.h:59
const std::string kLogCategory_
void GEMSimHitValidation::bookHistograms ( DQMStore::IBooker booker,
edm::Run const &  run,
edm::EventSetup const &  setup 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 18 of file GEMSimHitValidation.cc.

References dqm::implementation::IBooker::book1D(), GEMBaseValidation::bookDetectorOccupancy(), GEMBaseValidation::bookHist1D(), GEMBaseValidation::bookPIDHist(), GEMBaseValidation::bookXYOccupancy(), GEMBaseValidation::bookZROccupancy(), GEMSuperChamber::chambers(), GEMBaseValidation::detail_plot_, GEMBaseValidation::eta_range_, geomTokenBeginRun_, edm::EventSetup::getData(), getTOFRange(), GEMSuperChamber::id(), GEMBaseValidation::kLogCategory_, GEMDetId::layer(), me_detail_eloss_, me_detail_eloss_mu_, me_detail_occ_det_, me_detail_occ_det_mu_, me_detail_occ_xy_, me_detail_occ_zr_, me_detail_tof_, me_detail_tof_mu_, me_eloss_mu_, me_eloss_others_, me_occ_eta_mu_, me_occ_phi_mu_, me_occ_pid_, me_tof_mu_, me_tof_others_, HLT_FULL_cff::region, GEMGeometry::regions(), dqm::implementation::NavigatorBase::setCurrentFolder(), and relativeConstraints::station.

18  {
19  const GEMGeometry* gem = &setup.getData(geomTokenBeginRun_);
20 
21  // NOTE Time of flight
22  booker.setCurrentFolder("GEM/SimHits");
23 
24  TString tof_xtitle = "Time of flight [ns]";
25  TString tof_ytitle = "Entries";
26 
27  for (const auto& region : gem->regions()) {
28  Int_t region_id = region->region();
29 
30  for (const auto& station : region->stations()) {
31  Int_t station_id = station->station();
32 
33  const auto [tof_min, tof_max] = getTOFRange(station_id);
34  ME2IdsKey key2{region_id, station_id};
35 
36  me_tof_mu_[key2] = bookHist1D(
37  booker, key2, "sim_tof_muon", "SimHit TOF (Muon only)", 20, tof_min, tof_max, tof_xtitle, tof_ytitle);
38 
39  me_tof_others_[key2] = bookHist1D(
40  booker, key2, "sim_tof_others", "SimHit TOF (Other Particles)", 20, tof_min, tof_max, tof_xtitle, tof_ytitle);
41  } // station loop
42  } // region loop
43 
44  if (detail_plot_) {
45  for (const auto& region : gem->regions()) {
46  Int_t region_id = region->region();
47 
48  for (const auto& station : region->stations()) {
49  Int_t station_id = station->station();
50 
51  const auto [tof_min, tof_max] = getTOFRange(station_id);
52  const auto& superChamberVec = station->superChambers();
53  if (superChamberVec.empty() || superChamberVec.front() == nullptr) {
54  edm::LogError(kLogCategory_) << "Super chambers missing or null for region = " << region_id
55  << " and station = " << station_id;
56  } else {
57  const GEMSuperChamber* super_chamber = superChamberVec.front();
58 
59  for (const auto& chamber : super_chamber->chambers()) {
60  Int_t layer_id = chamber->id().layer();
61  ME3IdsKey key3{region_id, station_id, layer_id};
62 
63  me_detail_tof_[key3] = bookHist1D(
64  booker, key3, "sim_tof", "Time of Flight of Muon SimHits", 40, tof_min, tof_max, tof_xtitle, tof_ytitle);
65 
67  booker, key3, "sim_tof_muon", "SimHit TOF (Muon only)", 40, tof_min, tof_max, tof_xtitle, tof_ytitle);
68  } // chamber loop
69  } // end else
70  } // station loop
71  } // region loop
72  } // detail plot
73 
74  // NOTE Energy Loss
75  TString eloss_xtitle = "Energy loss [eV]";
76  TString eloss_ytitle = "Entries / 0.5 keV";
77 
78  for (const auto& station : gem->regions()[0]->stations()) {
79  Int_t station_id = station->station();
80 
81  auto eloss_mu_name = TString::Format("sim_eloss_muon_GE%d1", station_id);
82  auto eloss_mu_title = TString::Format("SimHit Energy Loss (Muon only) : GE%d1", station_id);
83 
84  me_eloss_mu_[station_id] =
85  booker.book1D(eloss_mu_name, eloss_mu_title + ";" + eloss_xtitle + ";" + eloss_ytitle, 20, 0.0, 10.0);
86 
87  auto eloss_others_name = TString::Format("sim_eloss_others_GE%d1", station_id);
88  auto eloss_others_title = TString::Format("SimHit Energy Loss (Other Particles) : GE%d1", station_id);
89 
90  me_eloss_others_[station_id] =
91  booker.book1D(eloss_others_name, eloss_others_title + ";" + eloss_xtitle + ";" + eloss_ytitle, 20, 0.0, 10.0);
92  } // station loop
93 
94  if (detail_plot_) {
95  for (const auto& region : gem->regions()) {
96  Int_t region_id = region->region();
97  for (const auto& station : region->stations()) {
98  Int_t station_id = station->station();
99  const auto& superChamberVec = station->superChambers();
100  if (superChamberVec.empty() || superChamberVec.front() == nullptr) {
101  edm::LogError(kLogCategory_) << "Super chambers missing or null for region = " << region_id
102  << " and station = " << station_id;
103  } else {
104  for (const auto& chamber : superChamberVec.front()->chambers()) {
105  Int_t layer_id = chamber->id().layer();
106  ME3IdsKey key3{region_id, station_id, layer_id};
107 
109  booker, key3, "sim_eloss", "SimHit Energy Loss", 60, 0.0, 6000.0, eloss_xtitle, eloss_ytitle);
110 
111  me_detail_eloss_mu_[key3] = bookHist1D(booker,
112  key3,
113  "sim_eloss_muon",
114  "SimHit Energy Loss (Muon Only)",
115  60,
116  0.0,
117  6000.0,
118  eloss_xtitle,
119  eloss_ytitle);
120 
121  } // chamber loop
122  } // end else
123  } // station loop
124  } // region loop
125  } // detail plot
126 
127  // NOTE Occupancy
128  for (const auto& region : gem->regions()) {
129  Int_t region_id = region->region();
130 
131  if (detail_plot_)
132  me_detail_occ_zr_[region_id] = bookZROccupancy(booker, region_id, "sim_simhit", "SimHit");
133 
134  for (const auto& station : region->stations()) {
135  Int_t station_id = station->station();
136  ME2IdsKey key2{region_id, station_id};
137 
138  if (detail_plot_) {
139  me_detail_occ_det_[key2] = bookDetectorOccupancy(booker, key2, station, "sim_simhit", "SimHit");
140  me_detail_occ_det_mu_[key2] = bookDetectorOccupancy(booker, key2, station, "sim_muon_simhit", "Muon SimHit");
141  }
142 
143  const auto& superChamberVec = station->superChambers();
144  if (superChamberVec.empty() || superChamberVec.front() == nullptr) {
145  edm::LogError(kLogCategory_) << "Super chambers missing or null for region = " << region_id
146  << " and station = " << station_id;
147  } else {
148  const GEMSuperChamber* super_chamber = superChamberVec.front();
149  for (const auto& chamber : super_chamber->chambers()) {
150  Int_t layer_id = chamber->id().layer();
151  ME3IdsKey key3{region_id, station_id, layer_id};
152 
153  me_occ_eta_mu_[key3] = bookHist1D(booker,
154  key3,
155  "sim_muon_occ_eta",
156  "Muon SimHit Eta Occupancy",
157  16,
158  eta_range_[station_id * 2 + 0],
159  eta_range_[station_id * 2 + 1],
160  "#eta");
161 
162  me_occ_phi_mu_[key3] =
163  bookHist1D(booker, key3, "sim_muon_occ_phi", "Muon SimHit Phi Occupancy", 36, -5, 355, "#phi [degrees]");
164 
165  me_occ_pid_[key3] = bookPIDHist(booker, key3, "sim_occ_pid", "Particle population");
166 
167  if (detail_plot_)
168  me_detail_occ_xy_[key3] = bookXYOccupancy(booker, key3, "sim_simhit", "SimHit");
169  } // layer loop
170  } // end else
171  } // station loop
172  } // region loop
173 }
dqm::impl::MonitorElement * bookHist1D(DQMStore::IBooker &booker, const T &key, const char *name, const char *title, Int_t nbinsx, Double_t xlow, Double_t xup, const char *x_title="", const char *y_title="Entries")
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
Log< level::Error, false > LogError
dqm::impl::MonitorElement * bookZROccupancy(DQMStore::IBooker &booker, Int_t region_id, const char *name_prfix, const char *title_prefix)
dqm::impl::MonitorElement * bookXYOccupancy(DQMStore::IBooker &booker, const T &key, const char *name_prefix, const char *title_prefix)
const std::vector< const GEMRegion * > & regions() const
Return a vector of all GEM regions.
Definition: GEMGeometry.cc:30
std::vector< Double_t > eta_range_
edm::ESGetToken< GEMGeometry, MuonGeometryRecord > geomTokenBeginRun_
std::tuple< Double_t, Double_t > getTOFRange(Int_t station_id)
constexpr int layer() const
Definition: GEMDetId.h:190
GEMDetId id() const
Return the GEMDetId of this super chamber.
const std::vector< const GEMChamber * > & chambers() const
Return the chambers in the super chamber.
std::tuple< Int_t, Int_t > ME2IdsKey
std::tuple< Int_t, Int_t, Int_t > ME3IdsKey
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
dqm::impl::MonitorElement * bookPIDHist(DQMStore::IBooker &booker, const T &key, const char *name, const char *title)
const std::string kLogCategory_
dqm::impl::MonitorElement * bookDetectorOccupancy(DQMStore::IBooker &booker, const T &key, const GEMStation *station, const char *name_prfix, const char *title_prefix)
std::tuple< Double_t, Double_t > GEMSimHitValidation::getTOFRange ( Int_t  station_id)
private

Definition at line 175 of file GEMSimHitValidation.cc.

References tof_range_.

Referenced by bookHistograms().

175  {
176  UInt_t start_index = station_id * 2;
177  Double_t tof_min = tof_range_[start_index];
178  Double_t tof_max = tof_range_[start_index + 1];
179  return std::make_tuple(tof_min, tof_max);
180 }
std::vector< Double_t > tof_range_

Member Data Documentation

edm::ESGetToken<GEMGeometry, MuonGeometryRecord> GEMSimHitValidation::geomToken_
private

Definition at line 23 of file GEMSimHitValidation.h.

Referenced by analyze(), and GEMSimHitValidation().

edm::ESGetToken<GEMGeometry, MuonGeometryRecord> GEMSimHitValidation::geomTokenBeginRun_
private

Definition at line 24 of file GEMSimHitValidation.h.

Referenced by bookHistograms(), and GEMSimHitValidation().

const Float_t GEMSimHitValidation::kEnergyCF_ = 1e6f
private

Definition at line 47 of file GEMSimHitValidation.h.

Referenced by analyze().

MEMap3Ids GEMSimHitValidation::me_detail_eloss_
private

Definition at line 35 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_detail_eloss_mu_
private

Definition at line 36 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap2Ids GEMSimHitValidation::me_detail_occ_det_
private

Definition at line 42 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap2Ids GEMSimHitValidation::me_detail_occ_det_mu_
private

Definition at line 43 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_detail_occ_xy_
private

Definition at line 44 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap1Ids GEMSimHitValidation::me_detail_occ_zr_
private

Definition at line 41 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_detail_tof_
private

Definition at line 30 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_detail_tof_mu_
private

Definition at line 31 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap1Ids GEMSimHitValidation::me_eloss_mu_
private

Definition at line 33 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap1Ids GEMSimHitValidation::me_eloss_others_
private

Definition at line 34 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_occ_eta_mu_
private

Definition at line 38 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_occ_phi_mu_
private

Definition at line 39 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap3Ids GEMSimHitValidation::me_occ_pid_
private

Definition at line 40 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap2Ids GEMSimHitValidation::me_tof_mu_
private

Definition at line 28 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

MEMap2Ids GEMSimHitValidation::me_tof_others_
private

Definition at line 29 of file GEMSimHitValidation.h.

Referenced by analyze(), and bookHistograms().

edm::EDGetTokenT<edm::PSimHitContainer> GEMSimHitValidation::simhit_token_
private

Definition at line 22 of file GEMSimHitValidation.h.

Referenced by analyze(), and GEMSimHitValidation().

std::vector<Double_t> GEMSimHitValidation::tof_range_
private

Definition at line 25 of file GEMSimHitValidation.h.

Referenced by GEMSimHitValidation(), and getTOFRange().