CMS 3D CMS Logo

SimG4HGCalValidation.cc
Go to the documentation of this file.
1 // File: SimG4HGCalValidation.cc
3 // Description: Main analysis class for HGCal Validation of G4 Hits
5 
12 
13 // to retreive hits
23 
29 
36 
40 
41 #include "G4Step.hh"
42 #include "G4Track.hh"
43 #include "G4NavigationHistory.hh"
44 #include "G4TouchableHistory.hh"
45 
46 #include "CLHEP/Units/GlobalSystemOfUnits.h"
47 #include "CLHEP/Units/GlobalPhysicalConstants.h"
48 
49 #include <cmath>
50 #include <iostream>
51 #include <iomanip>
52 #include <memory>
53 #include <vector>
54 #include <string>
55 
57  public Observer<const BeginOfJob*>,
58  public Observer<const BeginOfEvent*>,
59  public Observer<const G4Step*> {
60 public:
62  ~SimG4HGCalValidation() override;
63 
64  void produce(edm::Event&, const edm::EventSetup&) override;
65 
66 private:
67  SimG4HGCalValidation(const SimG4HGCalValidation&); // stop default
69 
70  void init();
71 
72  // observer classes
73  void update(const BeginOfJob* job) override;
74  void update(const BeginOfEvent* evt) override;
75  void update(const G4Step* step) override;
76 
77  // analysis related class
79  void clear();
80 
81 private:
82  //Keep reference to instantiate HcalNumberingFromDDD later
84 
85  //HGCal numbering scheme
86  std::vector<HGCNumberingScheme*> hgcNumbering_;
87  std::vector<HGCalNumberingScheme*> hgcalNumbering_;
88 
89  // to read from parameter set
90  std::vector<std::string> names_;
91  std::vector<int> types_, detTypes_, subdet_;
93 
94  // parameters from geometry
96 
97  // some private members for ananlysis
98  unsigned int count_;
101  std::vector<double> hgcEEedep_, hgcHEFedep_, hgcHEBedep_;
102  std::vector<unsigned int> dets_, hgchitDets_, hgchitIndex_;
103  std::vector<double> hgchitX_, hgchitY_, hgchitZ_;
104 };
105 
107  : numberingFromDDD_(nullptr), levelT1_(999), levelT2_(999), count_(0) {
108  edm::ParameterSet m_Anal = p.getParameter<edm::ParameterSet>("SimG4HGCalValidation");
109  names_ = m_Anal.getParameter<std::vector<std::string> >("Names");
110  types_ = m_Anal.getParameter<std::vector<int> >("Types");
111  detTypes_ = m_Anal.getParameter<std::vector<int> >("DetTypes");
112  labelLayer_ = m_Anal.getParameter<std::string>("LabelLayerInfo");
113  verbosity_ = m_Anal.getUntrackedParameter<int>("Verbosity", 0);
114 
115  produces<PHGCalValidInfo>(labelLayer_);
116 
117  if (verbosity_ > 0) {
118  edm::LogVerbatim("ValidHGCal") << "HGCalTestAnalysis:: Initialised as "
119  << "observer of begin events and of G4step "
120  << "with Parameter values: \n\tLabel : " << labelLayer_ << " and with "
121  << names_.size() << " detectors";
122  for (unsigned int k = 0; k < names_.size(); ++k)
123  edm::LogVerbatim("ValidHGCal") << " [" << k << "] " << names_[k] << " Type " << types_[k] << " DetType "
124  << detTypes_[k];
125  }
126 }
127 
129  delete numberingFromDDD_;
130  for (auto number : hgcNumbering_)
131  delete number;
132  for (auto number : hgcalNumbering_)
133  delete number;
134 }
135 
137  std::unique_ptr<PHGCalValidInfo> productLayer(new PHGCalValidInfo);
138  layerAnalysis(*productLayer);
139  e.put(std::move(productLayer), labelLayer_);
140 }
141 
143  const edm::EventSetup* es = (*job)();
144  for (unsigned int type = 0; type < types_.size(); ++type) {
145  int layers(0);
146  int detType = detTypes_[type];
147  G4String nameX = "HGCal";
148  if (types_[type] <= 1) {
149  if (types_[type] == 0) {
151  if (detType == 0)
152  dets_.emplace_back((int)(DetId::HGCalEE));
153  else if (detType == 1)
154  dets_.emplace_back((int)(DetId::HGCalHSi));
155  else
156  dets_.emplace_back((int)(DetId::HGCalHSc));
157  } else {
158  dets_.push_back((unsigned int)(DetId::Forward));
159  if (detType == 0)
160  subdet_.emplace_back((int)(ForwardSubdetector::HGCEE));
161  else if (detType == 1)
162  subdet_.emplace_back((int)(ForwardSubdetector::HGCHEF));
163  else
164  subdet_.emplace_back((int)(ForwardSubdetector::HGCHEB));
165  }
166  if (detType == 0)
167  nameX = "HGCalEESensitive";
168  else if (detType == 1)
169  nameX = "HGCalHESiliconSensitive";
170  else
171  nameX = "HGCalHEScintillatorSensitive";
173  es->get<IdealGeometryRecord>().get(nameX, hdc);
174  if (hdc.isValid()) {
176  levelT1_ = hdc->levelTop(0);
177  levelT2_ = hdc->levelTop(1);
178  if (m_mode == HGCalGeometryMode::Trapezoid) {
179  types_[type] = -1;
180  hgcalNumbering_.emplace_back(new HGCalNumberingScheme(*hdc, (DetId::Detector)(dets_[type]), nameX));
181  } else if ((m_mode == HGCalGeometryMode::Hexagon) || (m_mode == HGCalGeometryMode::HexagonFull)) {
182  types_[type] = 1;
183  hgcNumbering_.push_back(new HGCNumberingScheme(*hdc, nameX));
184  } else {
185  types_[type] = 0;
186  hgcalNumbering_.emplace_back(new HGCalNumberingScheme(*hdc, (DetId::Detector)(dets_[type]), nameX));
187  }
188  layers = hdc->layers(false);
189  } else {
190  edm::LogError("ValidHGCal") << "Cannot find HGCalDDDConstants for " << nameX;
191  throw cms::Exception("Unknown", "ValidHGCal") << "Cannot find HGCalDDDConstants for " << nameX << "\n";
192  }
193  } else {
194  nameX = "HcalEndcap";
195  dets_.push_back((unsigned int)(DetId::Hcal));
196  subdet_.push_back((int)(HcalSubdetector::HcalEndcap));
198  es->get<HcalSimNumberingRecord>().get(hdc);
199  if (hdc.isValid()) {
201  layers = 18;
202  } else {
203  edm::LogError("ValidHGCal") << "Cannot find HcalDDDSimConstant";
204  throw cms::Exception("Unknown", "ValidHGCal") << "Cannot find HcalDDDSimConstant\n";
205  }
206  }
207  if (detType == 0) {
208  for (int i = 0; i < layers; ++i)
209  hgcEEedep_.push_back(0);
210  } else if (detType == 1) {
211  for (int i = 0; i < layers; ++i)
212  hgcHEFedep_.push_back(0);
213  } else {
214  for (int i = 0; i < layers; ++i)
215  hgcHEBedep_.push_back(0);
216  }
217  if (verbosity_ > 0)
218  edm::LogVerbatim("ValidHGCal") << "[" << type << "]: " << nameX << " det " << dets_[type] << " subdet "
219  << subdet_[type] << " with " << layers << " layers";
220  }
221 }
222 
223 //=================================================================== per EVENT
225  int iev = (*evt)()->GetEventID();
226  if (verbosity_ > 0)
227  edm::LogVerbatim("ValidHGCal") << "SimG4HGCalValidation: =====> Begin "
228  << "event = " << iev;
229 
230  ++count_;
231  edepEE_ = edepHEF_ = edepHEB_ = 0.;
232 
233  //HGCal variables
234  for (unsigned int i = 0; i < hgcEEedep_.size(); i++)
235  hgcEEedep_[i] = 0.;
236  for (unsigned int i = 0; i < hgcHEFedep_.size(); i++)
237  hgcHEFedep_[i] = 0.;
238  for (unsigned int i = 0; i < hgcHEBedep_.size(); i++)
239  hgcHEBedep_[i] = 0.;
240 
241  //Cache reset
242  clear();
243 }
244 
245 //=================================================================== each STEP
246 void SimG4HGCalValidation::update(const G4Step* aStep) {
247  if (aStep != nullptr) {
248  G4VPhysicalVolume* curPV = aStep->GetPreStepPoint()->GetPhysicalVolume();
249  const G4String& name = curPV->GetName();
250  G4VSensitiveDetector* curSD = aStep->GetPreStepPoint()->GetSensitiveDetector();
251  if (verbosity_ > 1)
252  edm::LogVerbatim("ValidHGCal") << "ValidHGCal::Step in " << name << " at "
253  << aStep->GetPreStepPoint()->GetPosition();
254 
255  // Only for Sensitive detector
256  if (curSD != nullptr) {
257  int type(-1);
258  for (unsigned int k = 0; k < names_.size(); ++k) {
259  if (name.find(names_[k].c_str()) != std::string::npos) {
260  type = k;
261  break;
262  }
263  }
264  int detType = (type >= 0) ? detTypes_[type] : -1;
265  if (verbosity_ > 0)
266  edm::LogVerbatim("ValidHGCal") << "ValidHGCal::In SD " << name << " type " << type << ":" << detType;
267 
268  // Right type of SD
269  if (type >= 0) {
270  //Get the 32-bit index of the hit cell
271  const G4TouchableHistory* touchable =
272  static_cast<const G4TouchableHistory*>(aStep->GetPreStepPoint()->GetTouchable());
273  unsigned int index(0);
274  int layer(0);
275  G4ThreeVector hitPoint = aStep->GetPreStepPoint()->GetPosition();
276  if (types_[type] <= 1) {
277  // HGCal
278  G4ThreeVector localpos = touchable->GetHistory()->GetTopTransform().TransformPoint(hitPoint);
279  float globalZ = touchable->GetTranslation(0).z();
280  int iz(globalZ > 0 ? 1 : -1);
281  int module(-1), cell(-1);
282  if (types_[type] == 1) {
283  if (touchable->GetHistoryDepth() == levelT1_) {
284  layer = touchable->GetReplicaNumber(0);
285  } else {
286  layer = touchable->GetReplicaNumber(2);
287  module = touchable->GetReplicaNumber(1);
288  cell = touchable->GetReplicaNumber(0);
289  }
290  index =
291  hgcNumbering_[type]->getUnitID((ForwardSubdetector)(subdet_[type]), layer, module, cell, iz, localpos);
292  } else {
293  if ((touchable->GetHistoryDepth() == levelT1_) || (touchable->GetHistoryDepth() == levelT2_)) {
294  layer = touchable->GetReplicaNumber(0);
295  } else {
296  layer = touchable->GetReplicaNumber(3);
297  module = touchable->GetReplicaNumber(2);
298  cell = touchable->GetReplicaNumber(1);
299  }
300  double weight(0);
301  index = hgcalNumbering_[type]->getUnitID(layer, module, cell, iz, hitPoint, weight);
302  }
303  if (verbosity_ > 1)
304  edm::LogVerbatim("ValidHGCal")
305  << "HGCal: " << name << " Layer " << layer << " Module " << module << " Cell " << cell;
306  } else {
307  // Hcal
308  int depth = (touchable->GetReplicaNumber(0)) % 10 + 1;
309  int lay = (touchable->GetReplicaNumber(0) / 10) % 100 + 1;
310  int det = (touchable->GetReplicaNumber(1)) / 1000;
312  numberingFromDDD_->unitID(det, math::XYZVectorD(hitPoint.x(), hitPoint.y(), hitPoint.z()), depth, lay);
313  index = HcalTestNumbering::packHcalIndex(tmp.subdet, tmp.zside, tmp.depth, tmp.etaR, tmp.phis, tmp.lay);
314  layer = tmp.lay;
315  if (verbosity_ > 1)
316  edm::LogVerbatim("ValidHGCal")
317  << "HCAL: " << det << ":" << depth << ":" << lay << " o/p " << tmp.subdet << ":" << tmp.zside << ":"
318  << tmp.depth << ":" << tmp.etaR << ":" << tmp.phis << ":" << tmp.lay << " point " << hitPoint << " "
319  << hitPoint.rho() << ":" << hitPoint.eta() << ":" << hitPoint.phi();
320  }
321 
322  double edeposit = aStep->GetTotalEnergyDeposit();
323  if (verbosity_ > 0)
324  edm::LogVerbatim("ValidHGCal") << "Layer " << layer << " Index " << std::hex << index << std::dec << " Edep "
325  << edeposit << " hit at " << hitPoint;
326  if (detType == 0) {
327  edepEE_ += edeposit;
328  if (layer < (int)(hgcEEedep_.size()))
329  hgcEEedep_[layer] += edeposit;
330  } else if (detType == 1) {
331  edepHEF_ += edeposit;
332  if (layer < (int)(hgcHEFedep_.size()))
333  hgcHEFedep_[layer] += edeposit;
334  } else {
335  edepHEB_ += edeposit;
336  if (layer < (int)(hgcHEBedep_.size()))
337  hgcHEBedep_[layer] += edeposit;
338  }
339  G4String nextVolume("XXX");
340  if (aStep->GetTrack()->GetNextVolume() != nullptr)
341  nextVolume = aStep->GetTrack()->GetNextVolume()->GetName();
342 
343  if (nextVolume.c_str() != name.c_str()) { //save hit when it exits cell
344  if (std::find(hgchitIndex_.begin(), hgchitIndex_.end(), index) == hgchitIndex_.end()) {
345  hgchitDets_.push_back(dets_[type]);
346  hgchitIndex_.push_back(index);
347  hgchitX_.push_back(hitPoint.x());
348  hgchitY_.push_back(hitPoint.y());
349  hgchitZ_.push_back(hitPoint.z());
350  }
351  }
352  } // it is right type of SD
353  } // it is in a SD
354  } //if aStep!=NULL
355 } //end update aStep
356 
357 //================================================================ End of EVENT
358 
360  if (verbosity_ > 0)
361  edm::LogVerbatim("ValidHGCal") << "\n ===>>> SimG4HGCalValidation: Energy "
362  << "deposit\n at EE : " << std::setw(6) << edepEE_ / CLHEP::MeV
363  << "\n at HEF: " << std::setw(6) << edepHEF_ / CLHEP::MeV
364  << "\n at HEB: " << std::setw(6) << edepHEB_ / CLHEP::MeV;
365 
366  //Fill HGC Variables
369 }
370 
371 //---------------------------------------------------
373  hgchitDets_.erase(hgchitDets_.begin(), hgchitDets_.end());
374  hgchitIndex_.erase(hgchitIndex_.begin(), hgchitIndex_.end());
375  hgchitX_.erase(hgchitX_.begin(), hgchitX_.end());
376  hgchitY_.erase(hgchitY_.begin(), hgchitY_.end());
377  hgchitZ_.erase(hgchitZ_.begin(), hgchitZ_.end());
378 }
379 
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SimG4HGCalValidation::levelT2_
int levelT2_
Definition: SimG4HGCalValidation.cc:95
SimG4HGCalValidation::hgcalNumbering_
std::vector< HGCalNumberingScheme * > hgcalNumbering_
Definition: SimG4HGCalValidation.cc:87
mps_fire.i
i
Definition: mps_fire.py:355
PHGCalValidInfo
Definition: PHGCalValidInfo.h:12
Observer
Definition: Observer.h:23
MessageLogger.h
SimG4HGCalValidation::edepEE_
double edepEE_
Definition: SimG4HGCalValidation.cc:100
HcalNumberingFromDDD::HcalID
Definition: HcalNumberingFromDDD.h:21
ForwardEmpty
Definition: ForwardSubdetector.h:5
ESHandle.h
HcalSimNumberingRecord.h
BeginOfJob.h
step
step
Definition: StallMonitor.cc:94
HGCNumberingScheme.h
ForwardSubdetector
ForwardSubdetector
Definition: ForwardSubdetector.h:4
HGCalDDDConstants::geomMode
HGCalGeometryMode::GeometryMode geomMode() const
Definition: HGCalDDDConstants.h:52
SimProducer.h
mps_merge.weight
weight
Definition: mps_merge.py:88
HGCalGeometryMode.h
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
HcalNumberingFromDDD
Definition: HcalNumberingFromDDD.h:16
DetId::Hcal
Definition: DetId.h:28
MeV
const double MeV
EndOfEvent.h
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
SimG4HGCalValidation::dets_
std::vector< unsigned int > dets_
Definition: SimG4HGCalValidation.cc:102
HcalTestNumbering.h
SimG4HGCalValidation::hgchitIndex_
std::vector< unsigned int > hgchitIndex_
Definition: SimG4HGCalValidation.cc:102
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
HcalNumberingFromDDD.h
SimG4HGCalValidation::names_
std::vector< std::string > names_
Definition: SimG4HGCalValidation.cc:90
SimG4HGCalValidation::init
void init()
ForwardSubdetector.h
Observer.h
SimG4HGCalValidation
Definition: SimG4HGCalValidation.cc:56
SimG4HGCalValidation::hgcNumbering_
std::vector< HGCNumberingScheme * > hgcNumbering_
Definition: SimG4HGCalValidation.cc:86
SimG4HGCalValidation::subdet_
std::vector< int > subdet_
Definition: SimG4HGCalValidation.cc:91
DEFINE_SIMWATCHER
#define DEFINE_SIMWATCHER(type)
Definition: SimWatcherFactory.h:13
SimG4HGCalValidation::hgchitY_
std::vector< double > hgchitY_
Definition: SimG4HGCalValidation.cc:103
SimG4HGCalValidation::hgchitX_
std::vector< double > hgchitX_
Definition: SimG4HGCalValidation.cc:103
DetId::HGCalHSi
Definition: DetId.h:33
DetId::HGCalEE
Definition: DetId.h:32
MakerMacros.h
HGCalNumberingScheme.h
BeginOfRun.h
HGCalGeometryMode::Trapezoid
Definition: HGCalGeometryMode.h:25
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
SimG4HGCalValidation::labelLayer_
std::string labelLayer_
Definition: SimG4HGCalValidation.cc:92
contentValuesFiles.number
number
Definition: contentValuesFiles.py:53
SimG4HGCalValidation::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: SimG4HGCalValidation.cc:136
SimG4HGCalValidation::types_
std::vector< int > types_
Definition: SimG4HGCalValidation.cc:91
SimG4HGCalValidation::hgcHEFedep_
std::vector< double > hgcHEFedep_
Definition: SimG4HGCalValidation.cc:101
edm::ESHandle
Definition: DTSurvey.h:22
SimG4HGCalValidation::operator=
const SimG4HGCalValidation & operator=(const SimG4HGCalValidation &)
SimG4HGCalValidation::hgcEEedep_
std::vector< double > hgcEEedep_
Definition: SimG4HGCalValidation.cc:101
BeginOfJob
Definition: BeginOfJob.h:8
dqmdumpme.k
k
Definition: dqmdumpme.py:60
SimG4HGCalValidation::edepHEB_
double edepHEB_
Definition: SimG4HGCalValidation.cc:100
SimG4HGCalValidation::hgchitZ_
std::vector< double > hgchitZ_
Definition: SimG4HGCalValidation.cc:103
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HGCEE
Definition: ForwardSubdetector.h:8
math::XYZVectorD
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
SimG4HGCalValidation::~SimG4HGCalValidation
~SimG4HGCalValidation() override
Definition: SimG4HGCalValidation.cc:128
edm::ParameterSet
Definition: ParameterSet.h:36
HcalTestNumbering::packHcalIndex
static uint32_t packHcalIndex(int det, int z, int depth, int eta, int phi, int lay)
Definition: HcalTestNumbering.cc:7
edm::LogError
Definition: MessageLogger.h:183
SimG4HGCalValidation::hgchitDets_
std::vector< unsigned int > hgchitDets_
Definition: SimG4HGCalValidation.cc:102
Event.h
SimProducer
Definition: SimProducer.h:64
SimWatcherFactory.h
BeginOfEvent.h
HGCalDDDConstants::layers
unsigned int layers(bool reco) const
Definition: HGCalDDDConstants.cc:558
HGCalGeometryMode::GeometryMode
GeometryMode
Definition: HGCalGeometryMode.h:25
ModuleDef.h
edm::LogVerbatim
Definition: MessageLogger.h:297
BeginOfEvent
Definition: BeginOfEvent.h:6
IdealGeometryRecord.h
DetId::Detector
Detector
Definition: DetId.h:24
edm::EventSetup
Definition: EventSetup.h:57
HcalSubdetector.h
module
Definition: vlib.h:198
get
#define get
edm::ESHandleBase::isValid
bool isValid() const
Definition: ESHandle.h:44
HGCalGeometryMode::Hexagon
Definition: HGCalGeometryMode.h:25
HGCNumberingScheme
Definition: HGCNumberingScheme.h:13
PHGCalValidInfo::fillhgcLayers
void fillhgcLayers(const double edepEE, const double edepHEF, const double edepHEB, const std::vector< double > &eedep, const std::vector< double > &hefdep, const std::vector< double > &hebdep)
Definition: PHGCalValidInfo.cc:21
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
SimG4HGCalValidation::edepHEF_
double edepHEF_
Definition: SimG4HGCalValidation.cc:100
HGCalGeometryMode::HexagonFull
Definition: HGCalGeometryMode.h:25
type
type
Definition: HCALResponse.h:21
eostools.move
def move(src, dest)
Definition: eostools.py:511
SimG4HGCalValidation::SimG4HGCalValidation
SimG4HGCalValidation(const edm::ParameterSet &p)
Definition: SimG4HGCalValidation.cc:106
HcalEndcap
Definition: HcalAssistant.h:34
DetId.h
SimG4HGCalValidation::detTypes_
std::vector< int > detTypes_
Definition: SimG4HGCalValidation.cc:91
SimG4HGCalValidation::count_
unsigned int count_
Definition: SimG4HGCalValidation.cc:98
DetId::HGCalHSc
Definition: DetId.h:34
SimG4HGCalValidation::clear
void clear()
Definition: SimG4HGCalValidation.cc:372
Exception
Definition: hltDiff.cc:246
HcalNumberingFromDDD::unitID
HcalID unitID(int det, const math::XYZVectorD &pos, int depth, int lay=-1) const
Definition: HcalNumberingFromDDD.cc:30
Point3D.h
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
EventSetup.h
PHGCalValidInfo::fillhgcHits
void fillhgcHits(const std::vector< unsigned int > &hitdets, const std::vector< unsigned int > &hitindex, const std::vector< double > &hitvtxX, const std::vector< double > &hitvtxY, const std::vector< double > &hitvtxZ)
Definition: PHGCalValidInfo.cc:7
AlignmentPI::index
index
Definition: AlignmentPayloadInspectorHelper.h:46
HGCalDDDConstants::levelTop
int levelTop(int ind=0) const
Definition: HGCalDDDConstants.h:85
HGCHEF
Definition: ForwardSubdetector.h:9
HGCalDDDConstants.h
ParameterSet.h
SimG4HGCalValidation::hgcHEBedep_
std::vector< double > hgcHEBedep_
Definition: SimG4HGCalValidation.cc:101
SimG4HGCalValidation::verbosity_
int verbosity_
Definition: SimG4HGCalValidation.cc:99
DetId::Forward
Definition: DetId.h:30
SimG4HGCalValidation::numberingFromDDD_
HcalNumberingFromDDD * numberingFromDDD_
Definition: SimG4HGCalValidation.cc:83
HGCalNumberingScheme
Definition: HGCalNumberingScheme.h:16
edm::Event
Definition: Event.h:73
SimG4HGCalValidation::update
void update(const BeginOfJob *job) override
This routine will be called when the appropriate signal arrives.
Definition: SimG4HGCalValidation.cc:142
PHGCalValidInfo.h
HcalSimNumberingRecord
Definition: HcalSimNumberingRecord.h:25
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
hgcalTopologyTester_cfi.layers
layers
Definition: hgcalTopologyTester_cfi.py:8
SimG4HGCalValidation::levelT1_
int levelT1_
Definition: SimG4HGCalValidation.cc:95
weight
Definition: weight.py:1
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27
SimG4HGCalValidation::layerAnalysis
void layerAnalysis(PHGCalValidInfo &)
Definition: SimG4HGCalValidation.cc:359
HGCHEB
Definition: ForwardSubdetector.h:10
HcalDDDSimConstants.h
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
HGCalTestNumbering.h