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 | Static Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes
CaloSimHitAnalysis Class Reference
Inheritance diagram for CaloSimHitAnalysis:
edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 CaloSimHitAnalysis (const edm::ParameterSet &ps)
 
 ~CaloSimHitAnalysis () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::SharedResources >
 EDAnalyzer ()=default
 
 EDAnalyzer (const EDAnalyzer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
const EDAnalyzeroperator= (const EDAnalyzer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex >
const & 
esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector
< ProductResolverIndexAndSkipBit >
const & 
itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::array< std::vector< ModuleDescription const * > *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Protected Member Functions

void analyze (edm::Event const &, edm::EventSetup const &) override
 
void analyzeHits (std::vector< PCaloHit > &, int)
 
void analyzePassiveHits (std::vector< PassiveHit > &hits)
 
void beginJob () override
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
void resetItemsToGetFrom (BranchType iType)
 

Private Attributes

const int allSteps_
 
const CaloGeometrycaloGeometry_
 
const std::vector< std::string > detNames_
 
std::map< int, unsigned int > etaDepth_
 
const std::string g4Label_
 
TH1F * h_edep1_ [nCalo_]
 
TH1F * h_edep_ [nCalo_]
 
TH1F * h_edepEM_ [nCalo_]
 
TH1F * h_edepHad_ [nCalo_]
 
TH1F * h_edepp_
 
TH1F * h_edepT1_ [nCalo_]
 
TH1F * h_edepT_ [nCalo_]
 
std::vector< TH1F * > h_edepTk_
 
TH1F * h_eta_ [nCalo_]
 
TH2F * h_etaphi_
 
TH1F * h_etot_ [nCalo_]
 
TH1F * h_etotg_ [nCalo_]
 
TH1F * h_hit_ [nCalo_]
 
TH1F * h_hitp_
 
TH1F * h_phi_ [nCalo_]
 
TH1F * h_rr_ [nCalo_]
 
TH2F * h_rz1_
 
TH2F * h_rz_
 
std::vector< TH2F * > h_rzH_
 
TH1F * h_stepp_
 
TH1F * h_time_ [nCalo_]
 
TH1F * h_timep_
 
TH1F * h_timeT_ [nCalo_]
 
std::vector< TH1F * > h_timeTk_
 
TH1F * h_trackp_
 
TH1F * h_zz_ [nCalo_]
 
const HcalGeometryhcalGeom_
 
const std::vector< std::string > hitLab_
 
const double maxEnergy_
 
const double maxTime_
 
const bool passive_
 
const double tCut_
 
const bool testNumber_
 
const std::vector< double > timeSliceUnit_
 
const double tMax_
 
const edm::EDGetTokenT
< edm::PassiveHitContainer
tok_passive_
 
const edm::ESGetToken
< CaloGeometry,
CaloGeometryRecord
tokGeom_
 
const std::vector
< edm::EDGetTokenT
< edm::PCaloHitContainer > > 
toks_calo_
 
const double tScale_
 

Static Private Attributes

static constexpr int nCalo_ = 6
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 

Detailed Description

Definition at line 45 of file CaloSimHitAnalysis.cc.

Constructor & Destructor Documentation

CaloSimHitAnalysis::CaloSimHitAnalysis ( const edm::ParameterSet ps)

Definition at line 87 of file CaloSimHitAnalysis.cc.

References g4Label_, hitLab_, mergeVDriftHistosByStation::name, AlCaHLTBitMon_QueryRunRegistry::string, and edm::vector_transform().

88  : g4Label_(ps.getUntrackedParameter<std::string>("moduleLabel", "g4SimHits")),
89  hitLab_(ps.getParameter<std::vector<std::string> >("hitCollection")),
90  timeSliceUnit_(ps.getParameter<std::vector<double> >("timeSliceUnit")),
91  maxEnergy_(ps.getUntrackedParameter<double>("maxEnergy", 250.0)),
92  maxTime_(ps.getUntrackedParameter<double>("maxTime", 1000.0)),
93  tMax_(ps.getUntrackedParameter<double>("timeCut", 100.0)),
94  tScale_(ps.getUntrackedParameter<double>("timeScale", 1.0)),
95  tCut_(ps.getUntrackedParameter<double>("timeThreshold", 15.0)),
96  testNumber_(ps.getUntrackedParameter<bool>("testNumbering", false)),
97  passive_(ps.getUntrackedParameter<bool>("passiveHits", false)),
98  allSteps_(ps.getUntrackedParameter<int>("allSteps", 100)),
99  detNames_(ps.getUntrackedParameter<std::vector<std::string> >("detNames")),
100  tokGeom_(esConsumes<CaloGeometry, CaloGeometryRecord>()),
102  [this](const std::string& name) {
103  return consumes<edm::PCaloHitContainer>(edm::InputTag{g4Label_, name});
104  })},
T getUntrackedParameter(std::string const &, T const &) const
const std::vector< std::string > hitLab_
auto vector_transform(std::vector< InputType > const &input, Function predicate) -> std::vector< typename std::remove_cv< typename std::remove_reference< decltype(predicate(input.front()))>::type >::type >
Definition: transform.h:11
const std::string g4Label_
const std::vector< std::string > detNames_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tokGeom_
const std::vector< edm::EDGetTokenT< edm::PCaloHitContainer > > toks_calo_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
const std::vector< double > timeSliceUnit_
CaloSimHitAnalysis::~CaloSimHitAnalysis ( )
inlineoverride

Definition at line 48 of file CaloSimHitAnalysis.cc.

48 {}

Member Function Documentation

void CaloSimHitAnalysis::analyze ( edm::Event const &  e,
edm::EventSetup const &  set 
)
overrideprotectedvirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 279 of file CaloSimHitAnalysis.cc.

References analyzeHits(), analyzePassiveHits(), caloGeometry_, edm::EventID::event(), edm::EventSetup::getData(), edm::Event::getHandle(), CaloGeometry::getSubdetectorGeometry(), DetId::Hcal, HcalBarrel, hcalGeom_, mps_fire::i, edm::EventBase::id(), edm::HandleBase::isValid(), passive_, edm::EventID::run(), tok_passive_, tokGeom_, and toks_calo_.

279  {
280  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis:Run = " << e.id().run() << " Event = " << e.id().event();
281 
282  caloGeometry_ = &set.getData(tokGeom_);
284 
285  for (unsigned int i = 0; i < toks_calo_.size(); i++) {
286  const edm::Handle<edm::PCaloHitContainer>& hitsCalo = e.getHandle(toks_calo_[i]);
287  bool getHits = (hitsCalo.isValid());
288 #ifdef EDM_ML_DEBUG
289  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis: Input flags Hits[" << i << "]: " << getHits;
290 #endif
291  if (getHits) {
292  std::vector<PCaloHit> caloHits;
293  caloHits.insert(caloHits.end(), hitsCalo->begin(), hitsCalo->end());
294 #ifdef EDM_ML_DEBUG
295  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis: Hit buffer [" << i << "] " << caloHits.size();
296 #endif
297  analyzeHits(caloHits, i);
298  }
299  }
300 
301  if (passive_) {
302  const edm::Handle<edm::PassiveHitContainer>& hitsPassive = e.getHandle(tok_passive_);
303  bool getHits = (hitsPassive.isValid());
304 #ifdef EDM_ML_DEBUG
305  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis: Passive: " << getHits;
306 #endif
307  if (getHits) {
308  std::vector<PassiveHit> passiveHits;
309  passiveHits.insert(passiveHits.end(), hitsPassive->begin(), hitsPassive->end());
310 #ifdef EDM_ML_DEBUG
311  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis: Passive Hit buffer " << passiveHits.size();
312 #endif
313  analyzePassiveHits(passiveHits);
314  }
315  }
316 }
void analyzeHits(std::vector< PCaloHit > &, int)
Log< level::Info, true > LogVerbatim
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
void analyzePassiveHits(std::vector< PassiveHit > &hits)
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tokGeom_
const edm::EDGetTokenT< edm::PassiveHitContainer > tok_passive_
const HcalGeometry * hcalGeom_
bool isValid() const
Definition: HandleBase.h:70
const CaloGeometry * caloGeometry_
const std::vector< edm::EDGetTokenT< edm::PCaloHitContainer > > toks_calo_
void CaloSimHitAnalysis::analyzeHits ( std::vector< PCaloHit > &  hits,
int  indx 
)
protected

Definition at line 318 of file CaloSimHitAnalysis.cc.

References funct::abs(), caloGeometry_, TauDecayModes::dec, HLT_FULL_cff::depth, PV3DBase< T, PVType, FrameType >::eta(), first, CaloGeometry::getPosition(), HcalGeometry::getPosition(), h_edep1_, h_edep_, h_edepEM_, h_edepHad_, h_edepT1_, h_edepT_, h_eta_, h_etaphi_, h_etot_, h_etotg_, h_hit_, h_phi_, h_rr_, h_rz1_, h_rz_, h_time_, h_timeT_, h_zz_, HcalBarrel, HcalEndcap, HcalForward, hcalGeom_, HcalOuter, gpuClustering::id, hit::id, isotrackApplyRegressor::k, nCalo_, PV3DBase< T, PVType, FrameType >::perp(), phi, PV3DBase< T, PVType, FrameType >::phi(), point, DetId::rawId(), edm::second(), HcalDetId::subdet(), tCut_, testNumber_, timeSliceUnit_, tMax_, tScale_, HcalTestNumbering::unpackHcalIndex(), z, and PV3DBase< T, PVType, FrameType >::z().

Referenced by analyze().

318  {
319  int nHit = hits.size();
320  int nHB = 0, nHE = 0, nHO = 0, nHF = 0, nEB = 0, nEE = 0, nBad = 0, iHit = 0;
321  std::map<CaloHitID, std::pair<double, double> > hitMap;
322  double etot[nCalo_], etotG[nCalo_];
323  for (unsigned int k = 0; k < nCalo_; ++k) {
324  etot[k] = etotG[k] = 0;
325  }
326  for (const auto& hit : hits) {
327  double edep = hit.energy();
328  double time = tScale_ * hit.time();
329  uint32_t id = hit.id();
330  int itra = hit.geantTrackId();
331  double edepEM = hit.energyEM();
332  double edepHad = hit.energyHad();
333  int idx(-1);
334  if (indx != 2) {
335  idx = indx;
336  if (indx == 0)
337  ++nEB;
338  else
339  ++nEE;
340  } else {
341  int subdet(0);
342  if (testNumber_) {
343  int ieta(0), phi(0), z(0), lay(0), depth(0);
344  HcalTestNumbering::unpackHcalIndex(id, subdet, z, depth, ieta, phi, lay);
345  id = HcalDetId(static_cast<HcalSubdetector>(subdet), z * ieta, phi, depth).rawId();
346  } else {
347  subdet = HcalDetId(id).subdet();
348  }
349  if (subdet == static_cast<int>(HcalBarrel)) {
350  idx = indx;
351  nHB++;
352  } else if (subdet == static_cast<int>(HcalEndcap)) {
353  idx = indx + 1;
354  nHE++;
355  } else if (subdet == static_cast<int>(HcalOuter)) {
356  idx = indx + 2;
357  nHO++;
358  } else if (subdet == static_cast<int>(HcalForward)) {
359  idx = indx + 3;
360  nHF++;
361  }
362  }
363 #ifdef EDM_ML_DEBUG
364  edm::LogVerbatim("HitStudy") << "Hit[" << iHit << ":" << nHit << ":" << idx << "] E " << edep << ":" << edepEM
365  << ":" << edepHad << " T " << time << " itra " << itra << " ID " << std::hex << id
366  << std::dec;
367 #endif
368  ++iHit;
369  if (idx >= 0) {
370  CaloHitID hid(id, time, itra, 0, timeSliceUnit_[indx]);
371  auto itr = hitMap.find(hid);
372  if (itr == hitMap.end())
373  hitMap[hid] = std::make_pair(time, edep);
374  else
375  ((itr->second).second) += edep;
376  h_edepT_[idx]->Fill(edep);
377  h_timeT_[idx]->Fill(time);
378  if (edepEM > 0)
379  h_edepEM_[idx]->Fill(edepEM);
380  if (edepHad > 0)
381  h_edepHad_[idx]->Fill(edepHad);
382  if (time > tCut_)
383  h_edepT1_[idx]->Fill(edep);
384  } else {
385  ++nBad;
386  }
387  }
388 
389  //Now make plots
390  for (auto itr = hitMap.begin(); itr != hitMap.end(); ++itr) {
391  int idx = -1;
393  DetId id((itr->first).unitID());
394 #ifdef EDM_ML_DEBUG
395  edm::LogVerbatim("HitStudy") << "Index " << indx << " Geom " << caloGeometry_ << ":" << hcalGeom_ << " "
396  << std::hex << id.rawId() << std::dec;
397 #endif
398  if (indx != 2) {
399  idx = indx;
400  point = caloGeometry_->getPosition(id);
401  } else {
402  int subdet = id.subdetId();
403  if (subdet == static_cast<int>(HcalBarrel)) {
404  idx = indx;
405  } else if (subdet == static_cast<int>(HcalEndcap)) {
406  idx = indx + 1;
407  } else if (subdet == static_cast<int>(HcalOuter)) {
408  idx = indx + 2;
409  } else if (subdet == static_cast<int>(HcalForward)) {
410  idx = indx + 3;
411  }
412  point = hcalGeom_->getPosition(id);
413  }
414  double edep = (itr->second).second;
415  double time = (itr->second).first;
416 #ifdef EDM_ML_DEBUG
417  edm::LogVerbatim("HitStudy") << "Index " << idx << ":" << nCalo_ << " Point " << point << " E " << edep << " T "
418  << time;
419 #endif
420  if (idx >= 0) {
421  h_time_[idx]->Fill(time);
422  h_edep_[idx]->Fill(edep);
423  h_rr_[idx]->Fill(point.perp());
424  h_zz_[idx]->Fill(point.z());
425  h_eta_[idx]->Fill(point.eta());
426  h_phi_[idx]->Fill(point.phi());
427  h_rz_->Fill(std::abs(point.z()), point.perp());
428  h_etaphi_->Fill(std::abs(point.eta()), std::abs(point.phi()));
429  etot[idx] += edep;
430  if (time < tMax_)
431  etotG[idx] += edep;
432  if (time > tCut_) {
433  h_edep1_[idx]->Fill(edep);
434  h_rz1_->Fill(std::abs(point.z()), point.perp());
435  }
436  }
437  }
438 
439  if (indx < 2) {
440  h_etot_[indx]->Fill(etot[indx]);
441  h_etotg_[indx]->Fill(etotG[indx]);
442  if (indx == 0)
443  h_hit_[indx]->Fill(double(nEB));
444  else
445  h_hit_[indx]->Fill(double(nEE));
446  } else {
447  h_hit_[2]->Fill(double(nHB));
448  h_hit_[3]->Fill(double(nHE));
449  h_hit_[4]->Fill(double(nHO));
450  h_hit_[5]->Fill(double(nHF));
451  for (int idx = 2; idx < nCalo_; idx++) {
452  h_etot_[idx]->Fill(etot[idx]);
453  h_etotg_[idx]->Fill(etotG[idx]);
454  }
455  }
456 
457  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis::analyzeHits: EB " << nEB << " EE " << nEE << " HB " << nHB
458  << " HE " << nHE << " HO " << nHO << " HF " << nHF << " Bad " << nBad << " All " << nHit
459  << " Reduced " << hitMap.size();
460 }
Log< level::Info, true > LogVerbatim
T perp() const
Definition: PV3DBase.h:69
uint16_t *__restrict__ id
TH1F * h_edepT1_[nCalo_]
TH1F * h_timeT_[nCalo_]
TH1F * h_edepT_[nCalo_]
TH1F * h_time_[nCalo_]
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
U second(std::pair< T, U > const &p)
constexpr HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
TH1F * h_edep_[nCalo_]
TH1F * h_edepHad_[nCalo_]
T z() const
Definition: PV3DBase.h:61
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Definition: CaloGeometry.cc:50
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static constexpr int nCalo_
static void unpackHcalIndex(const uint32_t &idx, int &det, int &z, int &depth, int &eta, int &phi, int &lay)
const HcalGeometry * hcalGeom_
TH1F * h_edep1_[nCalo_]
GlobalPoint getPosition(const DetId &id) const
unsigned int id
const CaloGeometry * caloGeometry_
Definition: DetId.h:17
TH1F * h_etot_[nCalo_]
const std::vector< double > timeSliceUnit_
T eta() const
Definition: PV3DBase.h:73
TH1F * h_etotg_[nCalo_]
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
TH1F * h_edepEM_[nCalo_]
void CaloSimHitAnalysis::analyzePassiveHits ( std::vector< PassiveHit > &  hits)
protected

Definition at line 462 of file CaloSimHitAnalysis.cc.

References allSteps_, HcalDetId::depth(), detNames_, etaDepth_, h_edepp_, h_edepTk_, h_hitp_, h_rzH_, h_stepp_, h_timep_, h_timeTk_, h_trackp_, DetId::Hcal, hit::id, HcalDetId::ietaAbs(), isotrackApplyRegressor::k, findQualityFiles::rr, mathSSE::sqrt(), AlCaHLTBitMon_QueryRunRegistry::string, tracks, hit::x, hit::y, and hit::z.

Referenced by analyze().

462  {
463  const std::string active = "Active";
464  const std::string sensor = "Sensor";
465  std::map<std::pair<std::string, uint32_t>, int> hitx;
466  std::map<int, int> tracks;
467  unsigned int passive1(0), passive2(0);
468  for (auto& hit : hits) {
469  std::string name = hit.vname();
470  std::pair<std::string, uint32_t> volume = std::make_pair(name, (hit.id() % 1000000));
471  auto itr = hitx.find(volume);
472  if (itr == hitx.end())
473  hitx[volume] = 1;
474  else
475  ++(itr->second);
476  auto ktr = tracks.find(hit.trackId());
477  if (ktr == tracks.end())
478  tracks[hit.trackId()] = 1;
479  else
480  ++(ktr->second);
481  h_edepp_->Fill(hit.energy());
482  h_timep_->Fill(hit.time());
483  h_stepp_->Fill(hit.stepLength());
484  if ((name.find(active) != std::string::npos) || (name.find(sensor) != std::string::npos)) {
485  unsigned idet = detNames_.size();
486  for (unsigned int k = 0; k < detNames_.size(); ++k) {
487  if (name.find(detNames_[k]) != std::string::npos) {
488  idet = k;
489  break;
490  }
491  }
492  if (idet < detNames_.size()) {
493  h_edepTk_[idet]->Fill(hit.energy());
494  h_timeTk_[idet]->Fill(hit.time());
495  }
496  }
497 
498  if ((allSteps_ / 100) % 10 > 0) {
499  uint32_t id = hit.id();
500  if (DetId(id).det() == DetId::Hcal) {
501  HcalDetId hid = HcalDetId(id);
502  int indx = (100 * hid.ietaAbs() + hid.depth());
503  auto itr = etaDepth_.find(indx);
504 #ifdef EDM_ML_DEBUG
505  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis::ID: " << hid << " Index " << indx << " Iterator "
506  << (itr != etaDepth_.end());
507 #endif
508  ++passive1;
509  if (itr != etaDepth_.end()) {
510  uint32_t ipos = itr->second;
511  double rr = std::sqrt(hit.x() * hit.x() + hit.y() * hit.y());
512  if (ipos < h_rzH_.size()) {
513  h_rzH_[ipos]->Fill(hit.z(), rr);
514  ++passive2;
515  }
516  }
517  }
518  }
519  }
520  h_hitp_->Fill(hitx.size());
521  h_trackp_->Fill(tracks.size());
522  edm::LogVerbatim("HitStudy") << "CaloSimHitAnalysis::analyzPassiveHits: Total " << hits.size() << " Cells "
523  << hitx.size() << " Tracks " << tracks.size() << " Passive " << passive1 << ":"
524  << passive2;
525 }
Log< level::Info, true > LogVerbatim
constexpr int ietaAbs() const
get the absolute value of the cell ieta
Definition: HcalDetId.h:148
std::map< int, unsigned int > etaDepth_
std::vector< TH1F * > h_edepTk_
auto const & tracks
cannot be loose
std::vector< TH1F * > h_timeTk_
const std::vector< std::string > detNames_
T sqrt(T t)
Definition: SSEVec.h:19
unsigned int id
Definition: DetId.h:17
std::vector< TH2F * > h_rzH_
constexpr int depth() const
get the tower depth
Definition: HcalDetId.h:164
void CaloSimHitAnalysis::beginJob ( void  )
inlineoverrideprotectedvirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 52 of file CaloSimHitAnalysis.cc.

52 {}
void CaloSimHitAnalysis::beginRun ( edm::Run const &  ,
edm::EventSetup const &   
)
inlineoverrideprotected

Definition at line 54 of file CaloSimHitAnalysis.cc.

54 {}
void CaloSimHitAnalysis::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
inlineoverrideprotected

Definition at line 55 of file CaloSimHitAnalysis.cc.

55 {}
void CaloSimHitAnalysis::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 259 of file CaloSimHitAnalysis.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), submitPVResolutionJobs::desc, HLT_FULL_cff::labels, names, and AlCaHLTBitMon_QueryRunRegistry::string.

259  {
261  std::vector<std::string> labels = {"EcalHitsEB1", "EcalHitsEE1", "HcalHits1"};
262  std::vector<double> times = {1, 1, 1};
263  desc.addUntracked<std::string>("moduleLabel", "g4SimHits");
264  desc.add<std::vector<std::string> >("hitCollection", labels);
265  desc.add<std::vector<double> >("timeSliceUnit", times);
266  desc.addUntracked<double>("maxEnergy", 250.0);
267  desc.addUntracked<double>("maxTime", 1000.0);
268  desc.addUntracked<double>("timeCut", 100.0);
269  desc.addUntracked<double>("timeScale", 1.0);
270  desc.addUntracked<double>("timeThreshold", 15.0);
271  desc.addUntracked<bool>("testNumbering", false);
272  desc.addUntracked<bool>("passiveHits", false);
273  std::vector<std::string> names = {"PixelBarrel", "PixelForward", "TIB", "TID", "TOB", "TEC"};
274  desc.addUntracked<std::vector<std::string> >("detNames", names);
275  desc.addUntracked<int>("allStep", 100);
276  descriptions.add("caloSimHitAnalysis", desc);
277 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
const std::string names[nVars_]
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)

Member Data Documentation

const int CaloSimHitAnalysis::allSteps_
private

Definition at line 66 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

const CaloGeometry* CaloSimHitAnalysis::caloGeometry_
private

Definition at line 72 of file CaloSimHitAnalysis.cc.

Referenced by analyze(), and analyzeHits().

const std::vector<std::string> CaloSimHitAnalysis::detNames_
private

Definition at line 67 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

std::map<int, unsigned int> CaloSimHitAnalysis::etaDepth_
private

Definition at line 84 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

const std::string CaloSimHitAnalysis::g4Label_
private

Definition at line 61 of file CaloSimHitAnalysis.cc.

Referenced by CaloSimHitAnalysis(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_edep1_[nCalo_]
private

Definition at line 77 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_edep_[nCalo_]
private

Definition at line 76 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F* CaloSimHitAnalysis::h_edepEM_[nCalo_]
private

Definition at line 78 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_edepHad_[nCalo_]
private

Definition at line 78 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_edepp_
private

Definition at line 81 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_edepT1_[nCalo_]
private

Definition at line 77 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_edepT_[nCalo_]
private

Definition at line 76 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

std::vector<TH1F*> CaloSimHitAnalysis::h_edepTk_
private

Definition at line 82 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F* CaloSimHitAnalysis::h_eta_[nCalo_]
private

Definition at line 79 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH2F * CaloSimHitAnalysis::h_etaphi_
private

Definition at line 80 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_etot_[nCalo_]
private

Definition at line 79 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_etotg_[nCalo_]
private

Definition at line 79 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F* CaloSimHitAnalysis::h_hit_[nCalo_]
private

Definition at line 76 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F* CaloSimHitAnalysis::h_hitp_
private

Definition at line 81 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_phi_[nCalo_]
private

Definition at line 79 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_rr_[nCalo_]
private

Definition at line 78 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH2F * CaloSimHitAnalysis::h_rz1_
private

Definition at line 80 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH2F* CaloSimHitAnalysis::h_rz_
private

Definition at line 80 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

std::vector<TH2F*> CaloSimHitAnalysis::h_rzH_
private

Definition at line 83 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_stepp_
private

Definition at line 81 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_time_[nCalo_]
private

Definition at line 76 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_timep_
private

Definition at line 81 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F* CaloSimHitAnalysis::h_timeT_[nCalo_]
private

Definition at line 77 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

std::vector<TH1F*> CaloSimHitAnalysis::h_timeTk_
private

Definition at line 82 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_trackp_
private

Definition at line 81 of file CaloSimHitAnalysis.cc.

Referenced by analyzePassiveHits(), and tok_passive_().

TH1F * CaloSimHitAnalysis::h_zz_[nCalo_]
private

Definition at line 78 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

const HcalGeometry* CaloSimHitAnalysis::hcalGeom_
private

Definition at line 73 of file CaloSimHitAnalysis.cc.

Referenced by analyze(), and analyzeHits().

const std::vector<std::string> CaloSimHitAnalysis::hitLab_
private

Definition at line 62 of file CaloSimHitAnalysis.cc.

Referenced by CaloSimHitAnalysis(), and tok_passive_().

const double CaloSimHitAnalysis::maxEnergy_
private

Definition at line 64 of file CaloSimHitAnalysis.cc.

Referenced by tok_passive_().

const double CaloSimHitAnalysis::maxTime_
private

Definition at line 64 of file CaloSimHitAnalysis.cc.

Referenced by tok_passive_().

constexpr int CaloSimHitAnalysis::nCalo_ = 6
staticprivate

Definition at line 75 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

const bool CaloSimHitAnalysis::passive_
private

Definition at line 65 of file CaloSimHitAnalysis.cc.

Referenced by analyze(), and tok_passive_().

const double CaloSimHitAnalysis::tCut_
private

Definition at line 64 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

const bool CaloSimHitAnalysis::testNumber_
private

Definition at line 65 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits().

const std::vector<double> CaloSimHitAnalysis::timeSliceUnit_
private

Definition at line 63 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

const double CaloSimHitAnalysis::tMax_
private

Definition at line 64 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits(), and tok_passive_().

const edm::EDGetTokenT<edm::PassiveHitContainer> CaloSimHitAnalysis::tok_passive_
private

Definition at line 70 of file CaloSimHitAnalysis.cc.

Referenced by analyze().

const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> CaloSimHitAnalysis::tokGeom_
private

Definition at line 68 of file CaloSimHitAnalysis.cc.

Referenced by analyze().

const std::vector<edm::EDGetTokenT<edm::PCaloHitContainer> > CaloSimHitAnalysis::toks_calo_
private

Definition at line 69 of file CaloSimHitAnalysis.cc.

Referenced by analyze().

const double CaloSimHitAnalysis::tScale_
private

Definition at line 64 of file CaloSimHitAnalysis.cc.

Referenced by analyzeHits().