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 188 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().

188  {
189  const GEMGeometry* gem = &setup.getData(geomToken_);
190 
191  edm::Handle<edm::PSimHitContainer> simhit_container;
192  event.getByToken(simhit_token_, simhit_container);
193  if (not simhit_container.isValid()) {
194  edm::LogError(kLogCategory_) << "Cannot get GEMHits by Token simhitLabel" << std::endl;
195  return;
196  }
197 
198  for (const auto& simhit : *simhit_container.product()) {
199  const GEMDetId gemid(simhit.detUnitId());
200 
201  if (gem->idToDet(gemid) == nullptr) {
202  edm::LogError(kLogCategory_) << "SimHit did not matched with GEM Geometry." << std::endl;
203  continue;
204  }
205 
206  Int_t region_id = gemid.region();
207  Int_t station_id = gemid.station();
208  Int_t layer_id = gemid.layer();
209  Int_t chamber_id = gemid.chamber();
210  Int_t ieta = gemid.ieta();
211  Int_t num_layers = gemid.nlayers();
212 
213  ME2IdsKey key2{region_id, station_id};
214  ME3IdsKey key3{region_id, station_id, layer_id};
215 
216  GlobalPoint&& simhit_global_pos = gem->idToDet(gemid)->surface().toGlobal(simhit.localPosition());
217 
218  Float_t simhit_g_r = simhit_global_pos.perp();
219  Float_t simhit_g_x = simhit_global_pos.x();
220  Float_t simhit_g_y = simhit_global_pos.y();
221  Float_t simhit_g_abs_z = std::fabs(simhit_global_pos.z());
222  Float_t simhit_g_eta = std::fabs(simhit_global_pos.eta());
223  Float_t simhit_g_phi = toDegree(simhit_global_pos.phi());
224 
225  Float_t energy_loss = kEnergyCF_ * simhit.energyLoss();
226  energy_loss = energy_loss > 10 ? 9.9 : energy_loss;
227  Float_t tof = simhit.timeOfFlight();
228  Int_t pid = simhit.particleType();
229  Int_t pid_idx = getPidIdx(pid);
230 
231  // NOTE Fill MonitorElement
232  Int_t bin_x = getDetOccBinX(num_layers, chamber_id, layer_id);
233 
234  bool is_muon_simhit = isMuonSimHit(simhit);
235  if (is_muon_simhit) {
236  me_tof_mu_[key2]->Fill(tof);
237  me_eloss_mu_[station_id]->Fill(energy_loss);
238  me_occ_eta_mu_[key3]->Fill(simhit_g_eta);
239  me_occ_phi_mu_[key3]->Fill(simhit_g_phi);
240  } else {
241  me_tof_others_[key2]->Fill(tof);
242  me_eloss_others_[station_id]->Fill(energy_loss);
243  }
244 
245  me_occ_pid_[key3]->Fill(pid_idx);
246 
247  if (detail_plot_) {
248  me_detail_tof_[key3]->Fill(tof);
249  me_detail_eloss_[key3]->Fill(energy_loss);
250 
251  me_detail_occ_zr_[region_id]->Fill(simhit_g_abs_z, simhit_g_r);
252  me_detail_occ_det_[key2]->Fill(bin_x, ieta);
253  me_detail_occ_xy_[key3]->Fill(simhit_g_x, simhit_g_y);
254 
255  if (is_muon_simhit) {
256  me_detail_tof_mu_[key3]->Fill(tof);
257  me_detail_eloss_mu_[key3]->Fill(energy_loss);
258  me_detail_occ_det_mu_[key2]->Fill(bin_x, ieta);
259  }
260 
261  } // detail_plot
262  } // simhit loop
263 }
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  // Demonstrator chamber means we could have a missing station,
79  // process both regions to make sure we include it
80  for (const auto& region : gem->regions()) {
81  for (const auto& station : region->stations()) {
82  Int_t station_id = station->station();
83  if (me_eloss_mu_.find(station_id) != me_eloss_mu_.end())
84  continue;
85 
86  auto eloss_mu_name = TString::Format("sim_eloss_muon_GE%d1", station_id);
87  auto eloss_mu_title = TString::Format("SimHit Energy Loss (Muon only) : GE%d1", station_id);
88 
89  me_eloss_mu_[station_id] =
90  booker.book1D(eloss_mu_name, eloss_mu_title + ";" + eloss_xtitle + ";" + eloss_ytitle, 20, 0.0, 10.0);
91 
92  auto eloss_others_name = TString::Format("sim_eloss_others_GE%d1", station_id);
93  auto eloss_others_title = TString::Format("SimHit Energy Loss (Other Particles) : GE%d1", station_id);
94 
95  me_eloss_others_[station_id] =
96  booker.book1D(eloss_others_name, eloss_others_title + ";" + eloss_xtitle + ";" + eloss_ytitle, 20, 0.0, 10.0);
97  } // station loop
98  } // region loop
99 
100  if (detail_plot_) {
101  for (const auto& region : gem->regions()) {
102  Int_t region_id = region->region();
103  for (const auto& station : region->stations()) {
104  Int_t station_id = station->station();
105  const auto& superChamberVec = station->superChambers();
106  if (superChamberVec.empty() || superChamberVec.front() == nullptr) {
107  edm::LogError(kLogCategory_) << "Super chambers missing or null for region = " << region_id
108  << " and station = " << station_id;
109  } else {
110  for (const auto& chamber : superChamberVec.front()->chambers()) {
111  Int_t layer_id = chamber->id().layer();
112  ME3IdsKey key3{region_id, station_id, layer_id};
113 
115  booker, key3, "sim_eloss", "SimHit Energy Loss", 60, 0.0, 6000.0, eloss_xtitle, eloss_ytitle);
116 
117  me_detail_eloss_mu_[key3] = bookHist1D(booker,
118  key3,
119  "sim_eloss_muon",
120  "SimHit Energy Loss (Muon Only)",
121  60,
122  0.0,
123  6000.0,
124  eloss_xtitle,
125  eloss_ytitle);
126 
127  } // chamber loop
128  } // end else
129  } // station loop
130  } // region loop
131  } // detail plot
132 
133  // NOTE Occupancy
134  for (const auto& region : gem->regions()) {
135  Int_t region_id = region->region();
136 
137  if (detail_plot_)
138  me_detail_occ_zr_[region_id] = bookZROccupancy(booker, region_id, "sim_simhit", "SimHit");
139 
140  for (const auto& station : region->stations()) {
141  Int_t station_id = station->station();
142  ME2IdsKey key2{region_id, station_id};
143 
144  if (detail_plot_) {
145  me_detail_occ_det_[key2] = bookDetectorOccupancy(booker, key2, station, "sim_simhit", "SimHit");
146  me_detail_occ_det_mu_[key2] = bookDetectorOccupancy(booker, key2, station, "sim_muon_simhit", "Muon SimHit");
147  }
148 
149  const auto& superChamberVec = station->superChambers();
150  if (superChamberVec.empty() || superChamberVec.front() == nullptr) {
151  edm::LogError(kLogCategory_) << "Super chambers missing or null for region = " << region_id
152  << " and station = " << station_id;
153  } else {
154  const GEMSuperChamber* super_chamber = superChamberVec.front();
155  for (const auto& chamber : super_chamber->chambers()) {
156  Int_t layer_id = chamber->id().layer();
157  ME3IdsKey key3{region_id, station_id, layer_id};
158 
159  me_occ_eta_mu_[key3] = bookHist1D(booker,
160  key3,
161  "sim_muon_occ_eta",
162  "Muon SimHit Eta Occupancy",
163  16,
164  eta_range_[station_id * 2 + 0],
165  eta_range_[station_id * 2 + 1],
166  "#eta");
167 
168  me_occ_phi_mu_[key3] =
169  bookHist1D(booker, key3, "sim_muon_occ_phi", "Muon SimHit Phi Occupancy", 36, -5, 355, "#phi [degrees]");
170 
171  me_occ_pid_[key3] = bookPIDHist(booker, key3, "sim_occ_pid", "Particle population");
172 
173  if (detail_plot_)
174  me_detail_occ_xy_[key3] = bookXYOccupancy(booker, key3, "sim_simhit", "SimHit");
175  } // layer loop
176  } // end else
177  } // station loop
178  } // region loop
179 }
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 181 of file GEMSimHitValidation.cc.

References tof_range_.

Referenced by bookHistograms().

181  {
182  UInt_t start_index = station_id * 2;
183  Double_t tof_min = tof_range_[start_index];
184  Double_t tof_max = tof_range_[start_index + 1];
185  return std::make_tuple(tof_min, tof_max);
186 }
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().