CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
EtlSimHitsValidation Class Reference

#include <Validation/MtdValidation/plugins/EtlSimHitsValidation.cc>

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

Public Member Functions

 EtlSimHitsValidation (const edm::ParameterSet &)
 
 ~EtlSimHitsValidation () override
 
- 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
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- 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 &)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 

Private Attributes

edm::EDGetTokenT< CrossingFrame< PSimHit > > etlSimHitsToken_
 
const std::string folder_
 
const float hitMinEnergy1Dis_
 
const float hitMinEnergy2Dis_
 
MonitorElementmeHitEnergy_ [4]
 
MonitorElementmeHitEta_ [4]
 
MonitorElementmeHitEvsEta_ [4]
 
MonitorElementmeHitEvsPhi_ [4]
 
MonitorElementmeHitPhi_ [4]
 
MonitorElementmeHitTime_ [4]
 
MonitorElementmeHitTvsE_ [4]
 
MonitorElementmeHitTvsEta_ [4]
 
MonitorElementmeHitTvsPhi_ [4]
 
MonitorElementmeHitX_ [4]
 
MonitorElementmeHitXlocal_ [4]
 
MonitorElementmeHitY_ [4]
 
MonitorElementmeHitYlocal_ [4]
 
MonitorElementmeHitZ_ [4]
 
MonitorElementmeHitZlocal_ [4]
 
MonitorElementmeNhits_ [4]
 
MonitorElementmeNtrkPerCell_ [4]
 
MonitorElementmeOccupancy_ [4]
 
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecordmtdgeoToken_
 
edm::ESGetToken< MTDTopology, MTDTopologyRcdmtdtopoToken_
 

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
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Description: ETL SIM hits validation

Implementation: [Notes on implementation]

Definition at line 45 of file EtlSimHitsValidation.cc.

Constructor & Destructor Documentation

◆ EtlSimHitsValidation()

EtlSimHitsValidation::EtlSimHitsValidation ( const edm::ParameterSet iConfig)
explicit

Definition at line 96 of file EtlSimHitsValidation.cc.

References etlSimHitsToken_, edm::ParameterSet::getParameter(), mtdgeoToken_, and mtdtopoToken_.

97  : folder_(iConfig.getParameter<std::string>("folder")),
98  hitMinEnergy1Dis_(iConfig.getParameter<double>("hitMinimumEnergy1Dis")),
99  hitMinEnergy2Dis_(iConfig.getParameter<double>("hitMinimumEnergy2Dis")) {
100  etlSimHitsToken_ = consumes<CrossingFrame<PSimHit> >(iConfig.getParameter<edm::InputTag>("inputTag"));
101  mtdgeoToken_ = esConsumes<MTDGeometry, MTDDigiGeometryRecord>();
102  mtdtopoToken_ = esConsumes<MTDTopology, MTDTopologyRcd>();
103 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
edm::EDGetTokenT< CrossingFrame< PSimHit > > etlSimHitsToken_
const std::string folder_
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_

◆ ~EtlSimHitsValidation()

EtlSimHitsValidation::~EtlSimHitsValidation ( )
override

Definition at line 105 of file EtlSimHitsValidation.cc.

105 {}

Member Function Documentation

◆ analyze()

void EtlSimHitsValidation::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 108 of file EtlSimHitsValidation.cc.

References MTDTopologyMode::barphiflat, angle_units::operators::convertMmToCm(), geant_units::operators::convertUnitsTo(), TauDecayModes::dec, ETLDetId::discSide(), HCALHighEnergyHPDFilter_cfi::energy, etlSimHitsToken_, Exception, dqm::impl::MonitorElement::Fill(), ETLDetId::geographicalId(), relativeConstraints::geom, MTDTopology::getMTDTopologyMode(), edm::EventSetup::getTransientHandle(), hitMinEnergy1Dis_, hitMinEnergy2Dis_, iEvent, edm::makeValid(), meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitPhi_, meHitTime_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meHitZlocal_, meNhits_, meNtrkPerCell_, meOccupancy_, mtdgeoToken_, mtdtopoToken_, DetId::rawId(), rpcPointValidation_cfi::simHit, findQualityFiles::size, protons_cff::time, GeomDet::toGlobal(), mps_merge::weight, x, y, z, and ecaldqm::zside().

108  {
109  using namespace edm;
110  using namespace geant_units::operators;
111 
112  auto geometryHandle = iSetup.getTransientHandle(mtdgeoToken_);
113  const MTDGeometry* geom = geometryHandle.product();
114 
115  auto topologyHandle = iSetup.getTransientHandle(mtdtopoToken_);
116  const MTDTopology* topology = topologyHandle.product();
117 
118  bool topo1Dis = false;
119  bool topo2Dis = false;
120  if (topology->getMTDTopologyMode() <= static_cast<int>(MTDTopologyMode::Mode::barphiflat)) {
121  topo1Dis = true;
122  }
123  if (topology->getMTDTopologyMode() > static_cast<int>(MTDTopologyMode::Mode::barphiflat)) {
124  topo2Dis = true;
125  }
126 
127  auto etlSimHitsHandle = makeValid(iEvent.getHandle(etlSimHitsToken_));
128  MixCollection<PSimHit> etlSimHits(etlSimHitsHandle.product());
129 
130  std::unordered_map<uint32_t, MTDHit> m_etlHits[4];
131  std::unordered_map<uint32_t, std::set<int> > m_etlTrkPerCell[4];
132 
133  // --- Loop over the ETL SIM hits
134 
135  int idet = 999;
136 
137  for (auto const& simHit : etlSimHits) {
138  // --- Use only hits compatible with the in-time bunch-crossing
139  if (simHit.tof() < 0 || simHit.tof() > 25.)
140  continue;
141 
142  ETLDetId id = simHit.detUnitId();
143  if (topo1Dis) {
144  if (id.zside() == -1) {
145  idet = 0;
146  } else if (id.zside() == 1) {
147  idet = 2;
148  } else {
149  continue;
150  }
151  }
152 
153  if (topo2Dis) {
154  if ((id.zside() == -1) && (id.nDisc() == 1)) {
155  idet = 0;
156  } else if ((id.zside() == -1) && (id.nDisc() == 2)) {
157  idet = 1;
158  } else if ((id.zside() == 1) && (id.nDisc() == 1)) {
159  idet = 2;
160  } else if ((id.zside() == 1) && (id.nDisc() == 2)) {
161  idet = 3;
162  } else {
163  continue;
164  }
165  }
166 
167  m_etlTrkPerCell[idet][id.rawId()].insert(simHit.trackId());
168 
169  auto simHitIt = m_etlHits[idet].emplace(id.rawId(), MTDHit()).first;
170 
171  // --- Accumulate the energy (in MeV) of SIM hits in the same detector cell
172  (simHitIt->second).energy += convertUnitsTo(0.001_MeV, simHit.energyLoss());
173 
174  // --- Get the time of the first SIM hit in the cell
175  if ((simHitIt->second).time == 0 || simHit.tof() < (simHitIt->second).time) {
176  (simHitIt->second).time = simHit.tof();
177 
178  auto hit_pos = simHit.entryPoint();
179  (simHitIt->second).x = hit_pos.x();
180  (simHitIt->second).y = hit_pos.y();
181  (simHitIt->second).z = hit_pos.z();
182  }
183 
184  } // simHit loop
185 
186  // ==============================================================================
187  // Histogram filling
188  // ==============================================================================
189 
190  for (int idet = 0; idet < 4; ++idet) { //two disks per side
191  if (((idet == 1) || (idet == 3)) && (topo1Dis == true))
192  continue;
193  meNhits_[idet]->Fill(m_etlHits[idet].size());
194 
195  for (auto const& hit : m_etlTrkPerCell[idet]) {
196  meNtrkPerCell_[idet]->Fill((hit.second).size());
197  }
198 
199  for (auto const& hit : m_etlHits[idet]) {
200  double weight = 1.0;
201  if (topo1Dis) {
202  if ((hit.second).energy < hitMinEnergy1Dis_)
203  continue;
204  }
205  if (topo2Dis) {
206  if ((hit.second).energy < hitMinEnergy2Dis_)
207  continue;
208  }
209  // --- Get the SIM hit global position
210  ETLDetId detId(hit.first);
211  DetId geoId = detId.geographicalId();
212  const MTDGeomDet* thedet = geom->idToDet(geoId);
213  if (thedet == nullptr)
214  throw cms::Exception("EtlSimHitsValidation") << "GeographicalID: " << std::hex << geoId.rawId() << " ("
215  << detId.rawId() << ") is invalid!" << std::dec << std::endl;
216 
217  Local3DPoint local_point(
218  convertMmToCm((hit.second).x), convertMmToCm((hit.second).y), convertMmToCm((hit.second).z));
219  const auto& global_point = thedet->toGlobal(local_point);
220 
221  if (topo2Dis && (detId.discSide() == 1)) {
222  weight = -weight;
223  }
224 
225  // --- Fill the histograms
226 
227  meHitEnergy_[idet]->Fill((hit.second).energy);
228  meHitTime_[idet]->Fill((hit.second).time);
229  meHitXlocal_[idet]->Fill((hit.second).x);
230  meHitYlocal_[idet]->Fill((hit.second).y);
231  meHitZlocal_[idet]->Fill((hit.second).z);
232  meOccupancy_[idet]->Fill(global_point.x(), global_point.y(), weight);
233  meHitX_[idet]->Fill(global_point.x());
234  meHitY_[idet]->Fill(global_point.y());
235  meHitZ_[idet]->Fill(global_point.z());
236  meHitPhi_[idet]->Fill(global_point.phi());
237  meHitEta_[idet]->Fill(global_point.eta());
238  meHitTvsE_[idet]->Fill((hit.second).energy, (hit.second).time);
239  meHitEvsPhi_[idet]->Fill(global_point.phi(), (hit.second).energy);
240  meHitEvsEta_[idet]->Fill(global_point.eta(), (hit.second).energy);
241  meHitTvsPhi_[idet]->Fill(global_point.phi(), (hit.second).time);
242  meHitTvsEta_[idet]->Fill(global_point.eta(), (hit.second).time);
243 
244  } // hit loop
245 
246  } // idet loop
247 }
size
Write out results.
int getMTDTopologyMode() const
Definition: MTDTopology.h:27
edm::ESGetToken< MTDGeometry, MTDDigiGeometryRecord > mtdgeoToken_
MonitorElement * meNhits_[4]
MonitorElement * meHitYlocal_[4]
edm::EDGetTokenT< CrossingFrame< PSimHit > > etlSimHitsToken_
Definition: weight.py:1
MonitorElement * meOccupancy_[4]
int zside(DetId const &)
MonitorElement * meHitY_[4]
MonitorElement * meHitTvsEta_[4]
constexpr NumType convertUnitsTo(double desiredUnits, NumType val)
Definition: GeantUnits.h:73
void Fill(long long x)
MonitorElement * meHitXlocal_[4]
int iEvent
Definition: GenABIO.cc:224
MonitorElement * meHitTvsPhi_[4]
MonitorElement * meHitX_[4]
MonitorElement * meHitEvsEta_[4]
MonitorElement * meHitEta_[4]
GlobalPoint toGlobal(const Local2DPoint &lp) const
Conversion to the global R.F. from the R.F. of the GeomDet.
Definition: GeomDet.h:49
MonitorElement * meHitTime_[4]
Definition: DetId.h:17
MonitorElement * meHitPhi_[4]
MonitorElement * meHitTvsE_[4]
constexpr NumType convertMmToCm(NumType millimeters)
Definition: angle_units.h:44
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
HLT enums.
MonitorElement * meHitZlocal_[4]
ESTransientHandle< T > getTransientHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:162
MonitorElement * meNtrkPerCell_[4]
MonitorElement * meHitEnergy_[4]
auto makeValid(const U &iOtherHandleType) noexcept(false)
Definition: ValidHandle.h:52
MonitorElement * meHitEvsPhi_[4]
edm::ESGetToken< MTDTopology, MTDTopologyRcd > mtdtopoToken_
MonitorElement * meHitZ_[4]

◆ bookHistograms()

void EtlSimHitsValidation::bookHistograms ( DQMStore::IBooker ibook,
edm::Run const &  run,
edm::EventSetup const &  iSetup 
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 250 of file EtlSimHitsValidation.cc.

References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::bookProfile(), folder_, meHitEnergy_, meHitEta_, meHitEvsEta_, meHitEvsPhi_, meHitPhi_, meHitTime_, meHitTvsE_, meHitTvsEta_, meHitTvsPhi_, meHitX_, meHitXlocal_, meHitY_, meHitYlocal_, meHitZ_, meHitZlocal_, meNhits_, meNtrkPerCell_, meOccupancy_, and dqm::implementation::NavigatorBase::setCurrentFolder().

252  {
253  ibook.setCurrentFolder(folder_);
254 
255  // --- histograms booking
256 
257  meNhits_[0] = ibook.book1D("EtlNhitsZnegD1",
258  "Number of ETL cells with SIM hits (-Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
259  100,
260  0.,
261  5000.);
262  meNhits_[1] = ibook.book1D(
263  "EtlNhitsZnegD2", "Number of ETL cells with SIM hits (-Z, Second disk);N_{ETL cells}", 100, 0., 5000.);
264  meNhits_[2] = ibook.book1D("EtlNhitsZposD1",
265  "Number of ETL cells with SIM hits (+Z, Single(topo1D)/First(topo2D) disk);N_{ETL cells}",
266  100,
267  0.,
268  5000.);
269  meNhits_[3] = ibook.book1D(
270  "EtlNhitsZposD2", "Number of ETL cells with SIM hits (+Z, Second Disk);N_{ETL cells}", 100, 0., 5000.);
271  meNtrkPerCell_[0] = ibook.book1D("EtlNtrkPerCellZnegD1",
272  "Number of tracks per ETL sensor (-Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
273  10,
274  0.,
275  10.);
276  meNtrkPerCell_[1] =
277  ibook.book1D("EtlNtrkPerCellZnegD2", "Number of tracks per ETL sensor (-Z, Second disk);N_{trk}", 10, 0., 10.);
278  meNtrkPerCell_[2] = ibook.book1D("EtlNtrkPerCellZposD1",
279  "Number of tracks per ETL sensor (+Z, Single(topo1D)/First(topo2D) disk);N_{trk}",
280  10,
281  0.,
282  10.);
283  meNtrkPerCell_[3] =
284  ibook.book1D("EtlNtrkPerCellZposD2", "Number of tracks per ETL sensor (+Z, Second disk);N_{trk}", 10, 0., 10.);
285  meHitEnergy_[0] = ibook.book1D(
286  "EtlHitEnergyZnegD1", "ETL SIM hits energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 3.);
287  meHitEnergy_[1] =
288  ibook.book1D("EtlHitEnergyZnegD2", "ETL SIM hits energy (-Z, Second disk);E_{SIM} [MeV]", 100, 0., 3.);
289  meHitEnergy_[2] = ibook.book1D(
290  "EtlHitEnergyZposD1", "ETL SIM hits energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV]", 100, 0., 3.);
291  meHitEnergy_[3] =
292  ibook.book1D("EtlHitEnergyZposD2", "ETL SIM hits energy (+Z, Second disk);E_{SIM} [MeV]", 100, 0., 3.);
293  meHitTime_[0] = ibook.book1D(
294  "EtlHitTimeZnegD1", "ETL SIM hits ToA (-Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
295  meHitTime_[1] = ibook.book1D("EtlHitTimeZnegD2", "ETL SIM hits ToA (-Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
296  meHitTime_[2] = ibook.book1D(
297  "EtlHitTimeZposD1", "ETL SIM hits ToA (+Z, Single(topo1D)/First(topo2D) disk);ToA_{SIM} [ns]", 100, 0., 25.);
298  meHitTime_[3] = ibook.book1D("EtlHitTimeZposD2", "ETL SIM hits ToA (+Z, Second disk);ToA_{SIM} [ns]", 100, 0., 25.);
299 
300  meHitXlocal_[0] = ibook.book1D("EtlHitXlocalZnegD1",
301  "ETL SIM local X (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
302  100,
303  -25.,
304  25.);
305  meHitXlocal_[1] =
306  ibook.book1D("EtlHitXlocalZnegD2", "ETL SIM local X (-Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
307  meHitXlocal_[2] = ibook.book1D("EtlHitXlocalZposD1",
308  "ETL SIM local X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM}^{LOC} [mm]",
309  100,
310  -25.,
311  25.);
312  meHitXlocal_[3] =
313  ibook.book1D("EtlHitXlocalZposD2", "ETL SIM local X (+Z, Second disk);X_{SIM}^{LOC} [mm]", 100, -25., 25.);
314 
315  meHitYlocal_[0] = ibook.book1D("EtlHitYlocalZnegD1",
316  "ETL SIM local Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
317  100,
318  -48.,
319  48.);
320  meHitYlocal_[1] =
321  ibook.book1D("EtlHitYlocalZnegD2", "ETL SIM local Y (-Z, Second Disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
322  meHitYlocal_[2] = ibook.book1D("EtlHitYlocalZposD1",
323  "ETL SIM local Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM}^{LOC} [mm]",
324  100,
325  -48.,
326  48.);
327  meHitYlocal_[3] =
328  ibook.book1D("EtlHitYlocalZposD2", "ETL SIM local Y (+Z, Second disk);Y_{SIM}^{LOC} [mm]", 100, -48., 48.);
329  meHitZlocal_[0] = ibook.book1D("EtlHitZlocalZnegD1",
330  "ETL SIM local Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
331  80,
332  -0.16,
333  0.16);
334  meHitZlocal_[1] =
335  ibook.book1D("EtlHitZlocalZnegD2", "ETL SIM local Z (-Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
336  meHitZlocal_[2] = ibook.book1D("EtlHitZlocalZposD1",
337  "ETL SIM local Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM}^{LOC} [mm]",
338  80,
339  -0.16,
340  0.16);
341  meHitZlocal_[3] =
342  ibook.book1D("EtlHitZlocalZposD2", "ETL SIM local Z (+Z, Second disk);Z_{SIM}^{LOC} [mm]", 80, -0.16, 0.16);
343 
344  meOccupancy_[0] =
345  ibook.book2D("EtlOccupancyZnegD1",
346  "ETL SIM hits occupancy (-Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
347  135,
348  -135.,
349  135.,
350  135,
351  -135.,
352  135.);
353  meOccupancy_[1] = ibook.book2D("EtlOccupancyZnegD2",
354  "ETL SIM hits occupancy (-Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
355  135,
356  -135.,
357  135.,
358  135,
359  -135.,
360  135.);
361  meOccupancy_[2] =
362  ibook.book2D("EtlOccupancyZposD1",
363  "ETL SIM hits occupancy (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm];Y_{SIM} [cm]",
364  135,
365  -135.,
366  135.,
367  135,
368  -135.,
369  135.);
370  meOccupancy_[3] = ibook.book2D("EtlOccupancyZposD2",
371  "ETL SIM hits occupancy (+Z, Second disk);X_{SIM} [cm];Y_{SIM} [cm]",
372  135,
373  -135.,
374  135.,
375  135,
376  -135.,
377  135.);
378 
379  meHitX_[0] = ibook.book1D(
380  "EtlHitXZnegD1", "ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
381  meHitX_[1] = ibook.book1D("EtlHitXZnegD2", "ETL SIM hits X (-Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
382  meHitX_[2] = ibook.book1D(
383  "EtlHitXZposD1", "ETL SIM hits X (+Z, Single(topo1D)/First(topo2D) disk);X_{SIM} [cm]", 100, -130., 130.);
384  meHitX_[3] = ibook.book1D("EtlHitXZposD2", "ETL SIM hits X (+Z, Second disk);X_{SIM} [cm]", 100, -130., 130.);
385  meHitY_[0] = ibook.book1D(
386  "EtlHitYZnegD1", "ETL SIM hits Y (-Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
387  meHitY_[1] = ibook.book1D("EtlHitYZnegD2", "ETL SIM hits Y (-Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
388  meHitY_[2] = ibook.book1D(
389  "EtlHitYZposD1", "ETL SIM hits Y (+Z, Single(topo1D)/First(topo2D) disk);Y_{SIM} [cm]", 100, -130., 130.);
390  meHitY_[3] = ibook.book1D("EtlHitYZposD2", "ETL SIM hits Y (+Z, Second disk);Y_{SIM} [cm]", 100, -130., 130.);
391  meHitZ_[0] = ibook.book1D(
392  "EtlHitZZnegD1", "ETL SIM hits Z (-Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, -302., -298.);
393  meHitZ_[1] = ibook.book1D("EtlHitZZnegD2", "ETL SIM hits Z (-Z, Second disk);Z_{SIM} [cm]", 100, -304., -300.);
394  meHitZ_[2] = ibook.book1D(
395  "EtlHitZZposD1", "ETL SIM hits Z (+Z, Single(topo1D)/First(topo2D) disk);Z_{SIM} [cm]", 100, 298., 302.);
396  meHitZ_[3] = ibook.book1D("EtlHitZZposD2", "ETL SIM hits Z (+Z, Second disk);Z_{SIM} [cm]", 100, 300., 304.);
397 
398  meHitPhi_[0] = ibook.book1D(
399  "EtlHitPhiZnegD1", "ETL SIM hits #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
400  meHitPhi_[1] =
401  ibook.book1D("EtlHitPhiZnegD2", "ETL SIM hits #phi (-Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
402  meHitPhi_[2] = ibook.book1D(
403  "EtlHitPhiZposD1", "ETL SIM hits #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
404  meHitPhi_[3] =
405  ibook.book1D("EtlHitPhiZposD2", "ETL SIM hits #phi (+Z, Second disk);#phi_{SIM} [rad]", 100, -3.15, 3.15);
406  meHitEta_[0] = ibook.book1D(
407  "EtlHitEtaZnegD1", "ETL SIM hits #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, -3.2, -1.56);
408  meHitEta_[1] = ibook.book1D("EtlHitEtaZnegD2", "ETL SIM hits #eta (-Z, Second disk);#eta_{SIM}", 100, -3.2, -1.56);
409  meHitEta_[2] = ibook.book1D(
410  "EtlHitEtaZposD1", "ETL SIM hits #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM}", 100, 1.56, 3.2);
411  meHitEta_[3] = ibook.book1D("EtlHitEtaZposD2", "ETL SIM hits #eta (+Z, Second disk);#eta_{SIM}", 100, 1.56, 3.2);
412 
413  meHitTvsE_[0] =
414  ibook.bookProfile("EtlHitTvsEZnegD1",
415  "ETL SIM time vs energy (-Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
416  50,
417  0.,
418  2.,
419  0.,
420  100.);
421  meHitTvsE_[1] = ibook.bookProfile(
422  "EtlHitTvsEZnegD2", "ETL SIM time vs energy (-Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
423  meHitTvsE_[2] =
424  ibook.bookProfile("EtlHitTvsEZposD1",
425  "ETL SIM time vs energy (+Z, Single(topo1D)/First(topo2D) disk);E_{SIM} [MeV];T_{SIM} [ns]",
426  50,
427  0.,
428  2.,
429  0.,
430  100.);
431  meHitTvsE_[3] = ibook.bookProfile(
432  "EtlHitTvsEZposD2", "ETL SIM time vs energy (+Z, Second disk);E_{SIM} [MeV];T_{SIM} [ns]", 50, 0., 2., 0., 100.);
433  meHitEvsPhi_[0] =
434  ibook.bookProfile("EtlHitEvsPhiZnegD1",
435  "ETL SIM energy vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
436  50,
437  -3.15,
438  3.15,
439  0.,
440  100.);
441  meHitEvsPhi_[1] = ibook.bookProfile("EtlHitEvsPhiZnegD2",
442  "ETL SIM energy vs #phi (-Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
443  50,
444  -3.15,
445  3.15,
446  0.,
447  100.);
448  meHitEvsPhi_[2] =
449  ibook.bookProfile("EtlHitEvsPhiZposD1",
450  "ETL SIM energy vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
451  50,
452  -3.15,
453  3.15,
454  0.,
455  100.);
456  meHitEvsPhi_[3] = ibook.bookProfile("EtlHitEvsPhiZposD2",
457  "ETL SIM energy vs #phi (+Z, Second disk);#phi_{SIM} [rad];E_{SIM} [MeV]",
458  50,
459  -3.15,
460  3.15,
461  0.,
462  100.);
463  meHitEvsEta_[0] =
464  ibook.bookProfile("EtlHitEvsEtaZnegD1",
465  "ETL SIM energy vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
466  50,
467  -3.2,
468  -1.56,
469  0.,
470  100.);
471  meHitEvsEta_[1] = ibook.bookProfile("EtlHitEvsEtaZnegD2",
472  "ETL SIM energy vs #eta (-Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
473  50,
474  -3.2,
475  -1.56,
476  0.,
477  100.);
478  meHitEvsEta_[2] =
479  ibook.bookProfile("EtlHitEvsEtaZposD1",
480  "ETL SIM energy vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};E_{SIM} [MeV]",
481  50,
482  1.56,
483  3.2,
484  0.,
485  100.);
486  meHitEvsEta_[3] = ibook.bookProfile("EtlHitEvsEtaZposD2",
487  "ETL SIM energy vs #eta (+Z, Second disk);#eta_{SIM};E_{SIM} [MeV]",
488  50,
489  1.56,
490  3.2,
491  0.,
492  100.);
493  meHitTvsPhi_[0] =
494  ibook.bookProfile("EtlHitTvsPhiZnegD1",
495  "ETL SIM time vs #phi (-Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
496  50,
497  -3.15,
498  3.15,
499  0.,
500  100.);
501  meHitTvsPhi_[1] = ibook.bookProfile("EtlHitTvsPhiZnegD2",
502  "ETL SIM time vs #phi (-Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
503  50,
504  -3.15,
505  3.15,
506  0.,
507  100.);
508  meHitTvsPhi_[2] =
509  ibook.bookProfile("EtlHitTvsPhiZposD1",
510  "ETL SIM time vs #phi (+Z, Single(topo1D)/First(topo2D) disk);#phi_{SIM} [rad];T_{SIM} [ns]",
511  50,
512  -3.15,
513  3.15,
514  0.,
515  100.);
516  meHitTvsPhi_[3] = ibook.bookProfile("EtlHitTvsPhiZposD2",
517  "ETL SIM time vs #phi (+Z, Second disk);#phi_{SIM} [rad];T_{SIM} [ns]",
518  50,
519  -3.15,
520  3.15,
521  0.,
522  100.);
523  meHitTvsEta_[0] =
524  ibook.bookProfile("EtlHitTvsEtaZnegD1",
525  "ETL SIM time vs #eta (-Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
526  50,
527  -3.2,
528  -1.56,
529  0.,
530  100.);
531  meHitTvsEta_[1] = ibook.bookProfile(
532  "EtlHitTvsEtaZnegD2", "ETL SIM time vs #eta (-Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, -3.2, -1.56, 0., 100.);
533  meHitTvsEta_[2] =
534  ibook.bookProfile("EtlHitTvsEtaZposD1",
535  "ETL SIM time vs #eta (+Z, Single(topo1D)/First(topo2D) disk);#eta_{SIM};T_{SIM} [ns]",
536  50,
537  1.56,
538  3.2,
539  0.,
540  100.);
541  meHitTvsEta_[3] = ibook.bookProfile(
542  "EtlHitTvsEtaZposD2", "ETL SIM time vs #eta (+Z, Second disk);#eta_{SIM};T_{SIM} [ns]", 50, 1.56, 3.2, 0., 100.);
543 }
MonitorElement * meNhits_[4]
MonitorElement * meHitYlocal_[4]
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * meOccupancy_[4]
MonitorElement * meHitY_[4]
MonitorElement * meHitTvsEta_[4]
MonitorElement * meHitXlocal_[4]
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
MonitorElement * meHitTvsPhi_[4]
MonitorElement * meHitX_[4]
MonitorElement * meHitEvsEta_[4]
MonitorElement * meHitEta_[4]
MonitorElement * meHitTime_[4]
MonitorElement * meHitPhi_[4]
MonitorElement * meHitTvsE_[4]
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 * meHitZlocal_[4]
MonitorElement * meNtrkPerCell_[4]
MonitorElement * meHitEnergy_[4]
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
const std::string folder_
MonitorElement * meHitEvsPhi_[4]
MonitorElement * meHitZ_[4]

◆ fillDescriptions()

void EtlSimHitsValidation::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 546 of file EtlSimHitsValidation.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, HLT_2022v11_cff::InputTag, and AlCaHLTBitMon_QueryRunRegistry::string.

546  {
548 
549  desc.add<std::string>("folder", "MTD/ETL/SimHits");
550  desc.add<edm::InputTag>("inputTag", edm::InputTag("mix", "g4SimHitsFastTimerHitsEndcap"));
551  desc.add<double>("hitMinimumEnergy1Dis", 0.1); // [MeV]
552  desc.add<double>("hitMinimumEnergy2Dis", 0.001); // [MeV]
553 
554  descriptions.add("etlSimHitsValid", desc);
555 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

◆ etlSimHitsToken_

edm::EDGetTokenT<CrossingFrame<PSimHit> > EtlSimHitsValidation::etlSimHitsToken_
private

Definition at line 63 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and EtlSimHitsValidation().

◆ folder_

const std::string EtlSimHitsValidation::folder_
private

Definition at line 59 of file EtlSimHitsValidation.cc.

Referenced by bookHistograms().

◆ hitMinEnergy1Dis_

const float EtlSimHitsValidation::hitMinEnergy1Dis_
private

Definition at line 60 of file EtlSimHitsValidation.cc.

Referenced by analyze().

◆ hitMinEnergy2Dis_

const float EtlSimHitsValidation::hitMinEnergy2Dis_
private

Definition at line 61 of file EtlSimHitsValidation.cc.

Referenced by analyze().

◆ meHitEnergy_

MonitorElement* EtlSimHitsValidation::meHitEnergy_[4]
private

Definition at line 73 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEta_

MonitorElement* EtlSimHitsValidation::meHitEta_[4]
private

Definition at line 86 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEvsEta_

MonitorElement* EtlSimHitsValidation::meHitEvsEta_[4]
private

Definition at line 90 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitEvsPhi_

MonitorElement* EtlSimHitsValidation::meHitEvsPhi_[4]
private

Definition at line 89 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitPhi_

MonitorElement* EtlSimHitsValidation::meHitPhi_[4]
private

Definition at line 85 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTime_

MonitorElement* EtlSimHitsValidation::meHitTime_[4]
private

Definition at line 74 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsE_

MonitorElement* EtlSimHitsValidation::meHitTvsE_[4]
private

Definition at line 88 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsEta_

MonitorElement* EtlSimHitsValidation::meHitTvsEta_[4]
private

Definition at line 92 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitTvsPhi_

MonitorElement* EtlSimHitsValidation::meHitTvsPhi_[4]
private

Definition at line 91 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitX_

MonitorElement* EtlSimHitsValidation::meHitX_[4]
private

Definition at line 82 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitXlocal_

MonitorElement* EtlSimHitsValidation::meHitXlocal_[4]
private

Definition at line 76 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitY_

MonitorElement* EtlSimHitsValidation::meHitY_[4]
private

Definition at line 83 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitYlocal_

MonitorElement* EtlSimHitsValidation::meHitYlocal_[4]
private

Definition at line 77 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitZ_

MonitorElement* EtlSimHitsValidation::meHitZ_[4]
private

Definition at line 84 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meHitZlocal_

MonitorElement* EtlSimHitsValidation::meHitZlocal_[4]
private

Definition at line 78 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNhits_

MonitorElement* EtlSimHitsValidation::meNhits_[4]
private

Definition at line 70 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meNtrkPerCell_

MonitorElement* EtlSimHitsValidation::meNtrkPerCell_[4]
private

Definition at line 71 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ meOccupancy_

MonitorElement* EtlSimHitsValidation::meOccupancy_[4]
private

Definition at line 80 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and bookHistograms().

◆ mtdgeoToken_

edm::ESGetToken<MTDGeometry, MTDDigiGeometryRecord> EtlSimHitsValidation::mtdgeoToken_
private

Definition at line 65 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and EtlSimHitsValidation().

◆ mtdtopoToken_

edm::ESGetToken<MTDTopology, MTDTopologyRcd> EtlSimHitsValidation::mtdtopoToken_
private

Definition at line 66 of file EtlSimHitsValidation.cc.

Referenced by analyze(), and EtlSimHitsValidation().