ATLAS Offline Software
TFCSLateralShapeParametrizationHitChain.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
9 #include "TMath.h"
10 #include <TClass.h>
11 #ifdef USE_GPU
22 #include "ISF_FastCaloGpu/Args.h"
23 #include "HepPDT/ParticleData.hh"
24 // #include "HepPDT/ParticleDataTable.hh"
25 #endif
26 
27 //=============================================
28 //======= TFCSLateralShapeParametrizationHitChain =========
29 //=============================================
30 
31 #ifdef USE_GPU
33  TFCSLateralShapeParametrizationHitChain(const char *name, const char *title,
36  m_number_of_hits_simul(nullptr) {}
37 
38 // override the function for FCS-GPU
41  if (m_number_of_hits_simul)
42  m_number_of_hits_simul->set_geometry(geo);
43  m_geo = geo;
44 }
45 
46 #else
48  TFCSLateralShapeParametrizationHitChain(const char *name, const char *title)
50  m_number_of_hits_simul(nullptr) {}
51 #endif
52 
56  : TFCSLateralShapeParametrization(TString("hit_chain_") + hitsim->GetName(),
57  TString("hit chain for ") +
58  hitsim->GetTitle()),
59  m_number_of_hits_simul(nullptr) {
61 
62  m_chain.push_back(hitsim);
63 }
64 
67  return m_chain.size() + 1;
68  else
69  return m_chain.size();
70 }
71 
73  const Chain_t::value_type &value) {
74  if (m_ninit == size()) {
75  chain().push_back(value);
76  } else {
78  chain().insert(it, value);
79  }
80  ++m_ninit;
81 }
82 
86  if (ind == 0)
88  return m_chain[ind - 1];
89  } else {
90  return m_chain[ind];
91  }
92 }
93 
97  if (ind == 0)
99  return m_chain[ind - 1];
100  } else {
101  return m_chain[ind];
102  }
103 }
104 
106  unsigned int ind, TFCSParametrizationBase *param) {
107  TFCSLateralShapeParametrizationHitBase *param_typed = nullptr;
108  if (param != nullptr) {
109  if (!param->InheritsFrom(TFCSLateralShapeParametrizationHitBase::Class())) {
110  ATH_MSG_ERROR("Wrong class type " << param->IsA()->GetName());
111  return;
112  }
113  param_typed = static_cast<TFCSLateralShapeParametrizationHitBase *>(param);
114  }
116  if (ind == 0)
117  m_number_of_hits_simul = param_typed;
118  else
119  m_chain.at(ind - 1) = param_typed;
120  } else {
121  m_chain.at(ind) = param_typed;
122  }
123 }
124 
126  TFCSSimulationState &simulstate, const TFCSTruthState *truth,
127  const TFCSExtrapolationState *extrapol) const {
128  // TODO: should we still do it?
130  int n =
132  if (n < 1)
133  n = 1;
134  return n;
135  }
137  int n = hitsim->get_number_of_hits(simulstate, truth, extrapol);
138  if (n > 0)
139  return n;
140  }
141  return 1;
142 }
143 
146  float weight = hitsim->getMinWeight();
147  if (weight > 0.)
148  return weight;
149  }
150  return -1.;
151 }
152 
155  float weight = hitsim->getMaxWeight();
156  if (weight > 0.)
157  return weight;
158  }
159  return -1.;
160 }
161 
163  TFCSSimulationState &simulstate, const TFCSTruthState *truth,
164  const TFCSExtrapolationState *extrapol) const {
165  const int nhits = get_number_of_hits(simulstate, truth, extrapol);
166  const int sample = calosample();
167  if (sample < 0)
168  return 0;
169  if (nhits <= 0)
170  return simulstate.E(sample);
171  const float maxWeight =
172  getMaxWeight(); // maxWeight = -1 if shapeWeight class is not in m_chain
173 
174  if (maxWeight > 0)
175  return simulstate.E(sample) /
176  (maxWeight *
177  nhits); // maxWeight is used only if shapeWeight class is in m_chain
178  else
179  return simulstate.E(sample) /
180  nhits; // Otherwise, old definition of E_hit is used
181 }
182 
184  TFCSSimulationState &simulstate, const TFCSTruthState *truth,
185  const TFCSExtrapolationState *extrapol) const {
188  simulstate, truth, extrapol);
189  if (sigma2 > 0)
190  return sigma2;
191  }
193  double sigma2 = hitsim->get_sigma2_fluctuation(simulstate, truth, extrapol);
194  if (sigma2 > 0)
195  return sigma2;
196  }
197  // Limit to factor s_max_sigma2_fluctuation fluctuations
199 }
200 
202  MSG::Level level) const {
204  reset->setLevel(level);
205 }
206 
209  TFCSSimulationState &simulstate, const TFCSTruthState *truth,
210  const TFCSExtrapolationState *extrapol) const {
211  hit.reset_center();
212  if (get_nr_of_init() > 0) {
213  ATH_MSG_DEBUG("E(" << calosample() << ")=" << simulstate.E(calosample())
214  << " before init");
215 
216  auto initloopend = m_chain.begin() + get_nr_of_init();
217  for (auto hititr = m_chain.begin(); hititr != initloopend; ++hititr) {
218  TFCSLateralShapeParametrizationHitBase *hitsim = *hititr;
219 
221  hitsim->simulate_hit(hit, simulstate, truth, extrapol);
222 
223  if (status != FCSSuccess) {
224  ATH_MSG_ERROR("TFCSLateralShapeParametrizationHitChain::simulate(): "
225  "simulate_hit init call failed");
226  return FCSFatal;
227  }
228  }
229  }
230  return FCSSuccess;
231 }
232 
234  TFCSSimulationState &simulstate, const TFCSTruthState *truth,
235  const TFCSExtrapolationState *extrapol) const {
236  MSG::Level old_level = level();
237  const bool debug = msgLvl(MSG::DEBUG);
238  const bool verbose = msgLvl(MSG::VERBOSE);
239 
240  // Execute the first get_nr_of_init() simulate calls only once. Used for
241  // example to initialize the center position
243  if (init_hit(hit, simulstate, truth, extrapol) != FCSSuccess) {
244  ATH_MSG_ERROR("init_hit() failed");
245  return FCSFatal;
246  }
247 
248  int cs = calosample();
249  // Initialize hit energy only now, as init loop above might change the layer
250  // energy
251  const float Elayer = simulstate.E(cs);
252  if (Elayer == 0) {
253  ATH_MSG_VERBOSE("Elayer=0, nothing to do");
254  return FCSSuccess;
255  }
256  const float Ehit = get_E_hit(simulstate, truth, extrapol);
257  if (Ehit * Elayer <= 0) {
258  ATH_MSG_ERROR("TFCSLateralShapeParametrizationHitChain::simulate(): Ehit "
259  "and Elayer have different sign! Ehit="
260  << Ehit << " Elayer=" << Elayer);
261  return FCSFatal;
262  }
263 
264  // Call get_number_of_hits() only once inside get_E_hit(...),
265  // as it could contain a random number
266  int nhit = TMath::Nint(Elayer / Ehit);
267  if (nhit < 1)
268  nhit = 1;
269 
270  float sumEhit = 0;
271 
272  if (debug) {
273  PropagateMSGLevel(old_level);
274  ATH_MSG_DEBUG("E(" << cs << ")=" << simulstate.E(cs) << " #hits~" << nhit);
275  }
276 
277  //
278  // simulate the hits in GPU
279  //
280 #ifdef USE_GPU
281  int ichn = 0;
282  bool our_chainA = false;
283  if (cs > 0 && cs < 8 && cs != 4)
284  our_chainA = true;
285  if (nhit > MIN_GPU_HITS && our_chainA && simulstate.get_geold() != nullptr) {
287  "running FastCaloSim in GPU, nhits = " << nhit << " ; Ehit = " << Ehit);
288  GeoLoadGpu *gld = (GeoLoadGpu *)simulstate.get_geold();
289 
291  args.debug = debug;
292  args.cs = cs;
293  args.extrapol_eta_ent = extrapol->eta(cs, SUBPOS_ENT);
294  args.extrapol_eta_ext = extrapol->eta(cs, SUBPOS_EXT);
295  args.extrapol_phi_ent = extrapol->phi(cs, SUBPOS_ENT);
296  args.extrapol_phi_ext = extrapol->phi(cs, SUBPOS_EXT);
297  args.extrapol_r_ent = extrapol->r(cs, SUBPOS_ENT);
298  args.extrapol_r_ext = extrapol->r(cs, SUBPOS_EXT);
299  args.extrapol_z_ent = extrapol->z(cs, SUBPOS_ENT);
300  args.extrapol_z_ext = extrapol->z(cs, SUBPOS_EXT);
301  args.pdgId = truth->pdgid();
302  args.charge = HepPDT::ParticleID(args.pdgId).charge();
303  args.nhits = nhit;
304  args.rand = 0;
305  args.geo = gld->get_geoPtr();
306  args.rd4h = simulstate.get_gpu_rand();
307  args.ncells = gld->get_ncells();
308  ichn = 0;
309  // reweight the cell energies for pion
310  bool reweight = false;
311  for (auto hitsim : m_chain) {
312  if (ichn == 0) {
313  args.extrapWeight =
314  ((TFCSCenterPositionCalculation *)hitsim)->getExtrapWeight();
315  }
316 
317  if (ichn == 1) {
318 
319  args.is_phi_symmetric = ((TFCSHistoLateralShapeParametrization *)hitsim)
320  ->is_phi_symmetric();
321  args.fh2d =
322  ((TFCSHistoLateralShapeParametrization *)hitsim)->LdFH()->hf2d_d();
323  args.fh2d_h = *(
324  ((TFCSHistoLateralShapeParametrization *)hitsim)->LdFH()->hf2d_h());
325  }
326  if (ichn == 2 && m_chain.size() == 4) {
327  args.fh1d =
328  ((TFCSHistoLateralShapeGausLogWeight *)hitsim)->LdFH()->hf1d_d();
329  args.fh1d_h =
330  *(((TFCSHistoLateralShapeGausLogWeight *)hitsim)->LdFH()->hf1d_h());
331  reweight = true;
332  }
333  if ((ichn == 2 && m_chain.size() == 3) ||
334  (ichn == 3 && m_chain.size() == 4)) {
335  // ATH_MSG_DEBUG("---NumberOfBins :" << ( (TFCSHitCellMappingWi
336  // ggle*)hitsim )->get_number_of_bins() );
337  args.fhs = ((TFCSHitCellMappingWiggle *)hitsim)->LdFH()->hf_d();
338  args.fhs_h = *(((TFCSHitCellMappingWiggle *)hitsim)->LdFH()->hf_h());
339  }
340 
341  ichn++;
342  }
343  if (reweight)
344  CaloGpuGeneral::simulate_hits(Ehit, 1.2 * nhit, args, reweight);
345  else
346  CaloGpuGeneral::simulate_hits(Ehit, nhit, args, reweight);
347 
348  for (unsigned int ii = 0; ii < args.ct; ++ii) {
349 
350  const CaloDetDescrElement_Gpu *cellele =
351  gld->index2cell(args.hitcells_E_h[ii].cellid);
352  const CaloDetDescrElement *cell_h =
353  m_geo->getDDE(cs, cellele->eta(), cellele->phi());
354  sumEhit += args.hitcells_E_h[ii].energy;
355  if (reweight) {
356  if (std::abs(sumEhit) > std::abs(Elayer))
357  simulstate.deposit(cell_h, args.hitcells_E_h[ii].energy);
358  }
359  }
360  } else
361 #endif
362  {
363 
364  auto hitloopstart = m_chain.begin() + get_nr_of_init();
365  int ihit = 0;
366  int ifail = 0;
367  int itotalfail = 0;
368  int retry_warning = 1;
369  int retry = 0;
370  do {
371  hit.reset();
372  hit.E() = Ehit;
373  bool failed = false;
374  if (debug)
375  if (ihit == 2)
376  if (!verbose) {
377  // Switch debug output back to INFO to avoid huge logs, but keep
378  // full log in verbose
379  PropagateMSGLevel(MSG::INFO);
380  }
381  for (auto hititr = hitloopstart; hititr != m_chain.end(); ++hititr) {
382  TFCSLateralShapeParametrizationHitBase *hitsim = *hititr;
383 
385  hitsim->simulate_hit(hit, simulstate, truth, extrapol);
386 
387  if (status == FCSSuccess)
388  continue;
389  if (status == FCSFatal) {
390  if (debug)
391  PropagateMSGLevel(old_level);
392  return FCSFatal;
393  }
394  failed = true;
395  ++ifail;
396  ++itotalfail;
397  retry = status - FCSRetry;
398  retry_warning = retry >> 1;
399  if (retry_warning < 1)
400  retry_warning = 1;
401  break;
402  }
403  if (!failed) {
404  ifail = 0;
405  sumEhit += hit.E();
406  ++ihit;
407 
408  if (((ihit == 20 * nhit) || (ihit == 100 * nhit)) && ihit >= 100) {
410  "TFCSLateralShapeParametrizationHitChain::simulate(): Iterated "
411  << ihit << " times, expected " << nhit << " times. Deposited E("
412  << cs << ")=" << sumEhit << " expected E=" << Elayer);
413  }
414  if (ihit >= 1000 * nhit && ihit >= 1000) {
415  ATH_MSG_DEBUG("TFCSLateralShapeParametrizationHitChain::simulate():"
416  " Aborting hit chain, iterated "
417  << ihit << " times, expected " << nhit
418  << " times. Deposited E(" << cs << ")=" << sumEhit
419  << " expected E=" << Elayer << ", caused by:");
420  if (debug) Print();
421  break;
422  }
423  } else {
424  if (ifail >= retry) {
425  ATH_MSG_ERROR("TFCSLateralShapeParametrizationHitChain::simulate(): "
426  "simulate_hit call failed after "
427  << ifail << "/" << retry
428  << "retries, total fails=" << itotalfail);
429  if (debug)
430  PropagateMSGLevel(old_level);
431  return FCSFatal;
432  }
433  if (ifail >= retry_warning) {
434  ATH_MSG_WARNING("TFCSLateralShapeParametrizationHitChain::simulate():"
435  " retry simulate_hit calls "
436  << ifail << "/" << retry
437  << ", total fails=" << itotalfail);
438  }
439  }
440  } while (std::abs(sumEhit) < std::abs(Elayer));
441  }
442 
443  if (debug)
444  PropagateMSGLevel(old_level);
445  return FCSSuccess;
446 }
447 
450  TString opt(option);
451  bool shortprint = opt.Index("short") >= 0;
452  bool longprint = msgLvl(MSG::DEBUG) || (msgLvl(MSG::INFO) && !shortprint);
453  TString optprint = opt;
454  optprint.ReplaceAll("short", "");
455 
457  if (longprint)
458  ATH_MSG_INFO(optprint << "#:Number of hits simulation:");
460  }
461  if (longprint && get_nr_of_init() > 0)
462  ATH_MSG_INFO(optprint << "> Simulation init chain:");
463  auto hitloopstart = m_chain.begin() + get_nr_of_init();
464  for (auto hititr = m_chain.begin(); hititr != hitloopstart; ++hititr) {
465  TFCSLateralShapeParametrizationHitBase *hitsim = *hititr;
466  hitsim->Print(opt + "> ");
467  }
468  if (longprint)
469  ATH_MSG_INFO(optprint << "- Simulation chain:");
470  char count = 'A';
471  for (auto hititr = hitloopstart; hititr != m_chain.end(); ++hititr) {
472  TFCSLateralShapeParametrizationHitBase *hitsim = *hititr;
473  hitsim->Print(opt + count + " ");
474  count++;
475  }
476 }
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
GeoLoadGpu::get_geoPtr
GeoGpu * get_geoPtr() const
Definition: GeoLoadGpu.h:44
TFCSLateralShapeParametrizationHitChain::get_number_of_hits
virtual int get_number_of_hits(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Call get_number_of_hits() only once, as it could contain a random number.
Definition: TFCSLateralShapeParametrizationHitChain.cxx:125
TFCSCenterPositionCalculation.h
TFCSHitCellMappingWiggle
Definition: TFCSHitCellMappingWiggle.h:20
FCSReturnCode
FCSReturnCode
Base class for all FastCaloSim parametrizations Functionality in derivde classes is provided through ...
Definition: TFCSParametrizationBase.h:41
TFCSLateralShapeParametrizationHitBase::simulate_hit
virtual FCSReturnCode simulate_hit(Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol)
simulated one hit position with some energy.
Definition: TFCSLateralShapeParametrizationHitBase.cxx:50
TFCSLateralShapeParametrizationHitBase::Hit::reset_center
void reset_center()
Definition: TFCSLateralShapeParametrizationHitBase.h:71
TFCSLateralShapeParametrizationHitChain::getMinWeight
virtual float getMinWeight() const
Get minimum and maximum value of weight for hit energy reweighting.
Definition: TFCSLateralShapeParametrizationHitChain.cxx:144
TFCSLateralShapeParametrization::set_pdgid_Ekin_eta_Ekin_bin_calosample
virtual void set_pdgid_Ekin_eta_Ekin_bin_calosample(const TFCSLateralShapeParametrization &ref)
Definition: TFCSLateralShapeParametrization.cxx:25
TFCSHistoLateralShapeParametrization
Definition: TFCSHistoLateralShapeParametrization.h:20
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloDetDescrElement_Gpu
Definition: CaloDetDescrElement_g.h:10
ISF_FCS::MLogging::level
MSG::Level level() const
Retrieve output level.
Definition: MLogging.h:201
TFCSHistoLateralShapeGausLogWeight
Definition: TFCSHistoLateralShapeGausLogWeight.h:16
TFCSLateralShapeParametrizationHitBase::Hit::reset
void reset()
Definition: TFCSLateralShapeParametrizationHitBase.h:78
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
TFCSLateralShapeParametrizationHitChain::init_hit
virtual FCSReturnCode init_hit(TFCSLateralShapeParametrizationHitBase::Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Definition: TFCSLateralShapeParametrizationHitChain.cxx:207
TFCSCenterPositionCalculation
Definition: TFCSCenterPositionCalculation.h:11
skel.it
it
Definition: skel.GENtoEVGEN.py:423
TFCSLateralShapeParametrization::Print
void Print(Option_t *option="") const override
Definition: TFCSLateralShapeParametrization.cxx:53
TFCSLateralShapeParametrizationHitChain::PropagateMSGLevel
void PropagateMSGLevel(MSG::Level level) const
Definition: TFCSLateralShapeParametrizationHitChain.cxx:201
athena.value
value
Definition: athena.py:122
TFCSExtrapolationState
Definition: TFCSExtrapolationState.h:13
TFCSLateralShapeParametrizationHitBase::Hit
Definition: TFCSLateralShapeParametrizationHitBase.h:42
RunActsMaterialValidation.extrapol
extrapol
Definition: RunActsMaterialValidation.py:90
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
CaloDetDescrElement_Gpu::phi
CUDA_HOSTDEV float phi() const
cell phi
Definition: CaloDetDescrElement_g.h:228
TFCSLateralShapeParametrizationHitBase::get_sigma2_fluctuation
virtual double get_sigma2_fluctuation(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Give the effective size sigma^2 of the fluctuations that should be generated by the amount of generat...
Definition: TFCSLateralShapeParametrizationHitBase.cxx:19
TFCSLateralShapeParametrizationHitChain::operator[]
virtual const TFCSParametrizationBase * operator[](unsigned int ind) const override
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
Definition: TFCSLateralShapeParametrizationHitChain.cxx:84
CaloGpuGeneral.h
TFCSLateralShapeParametrizationHitChain::size
virtual unsigned int size() const override
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
Definition: TFCSLateralShapeParametrizationHitChain.cxx:65
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
TFCSHistoLateralShapeGausLogWeight.h
FCSRetry
@ FCSRetry
Definition: TFCSParametrizationBase.h:41
TFCSLateralShapeParametrizationHitBase
Definition: TFCSLateralShapeParametrizationHitBase.h:13
TFCSLateralShapeParametrizationHitChain::get_E_hit
virtual float get_E_hit(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Get hit energy from layer energy and number of hits.
Definition: TFCSLateralShapeParametrizationHitChain.cxx:162
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
TFCSLateralShapeParametrizationHitChain::getMaxWeight
virtual float getMaxWeight() const
Definition: TFCSLateralShapeParametrizationHitChain.cxx:153
CaloDetDescrElement_Gpu::eta
CUDA_HOSTDEV float eta() const
cell eta
Definition: CaloDetDescrElement_g.h:227
TFCSLateralShapeParametrizationHitBase::Hit::E
float & E()
Definition: TFCSLateralShapeParametrizationHitBase.h:90
CaloGpuGeneral::simulate_hits
void simulate_hits(float, int, Chain0_Args &, bool)
Definition: CaloGpuGeneral.cxx:45
TFCSParametrizationBase
Definition: TFCSParametrizationBase.h:46
TFCSLateralShapeParametrizationHitChain::get_sigma2_fluctuation
virtual float get_sigma2_fluctuation(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Give the effective size sigma^2 of the fluctuations that should be generated.
Definition: TFCSLateralShapeParametrizationHitChain.cxx:183
Args.h
TFCSLateralShapeParametrizationHitChain::push_back_init
void push_back_init(const Chain_t::value_type &value)
Definition: TFCSLateralShapeParametrizationHitChain.cxx:72
GeoLoadGpu.h
TFCSLateralShapeParametrizationHitChain::s_max_sigma2_fluctuation
static constexpr float s_max_sigma2_fluctuation
Definition: TFCSLateralShapeParametrizationHitChain.h:87
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
TFCSLateralShapeParametrizationHitChain::get_nr_of_init
unsigned int get_nr_of_init() const
Definition: TFCSLateralShapeParametrizationHitChain.h:57
TFCSLateralShapeParametrizationHitChain.h
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TFCSHistoLateralShapeParametrization.h
ICaloGeometry
Definition: ICaloGeometry.h:14
TFCSSimulationState::deposit
void deposit(const CaloDetDescrElement *cellele, float E)
Definition: TFCSSimulationState.cxx:31
covarianceTool.title
title
Definition: covarianceTool.py:542
TFCSParametrizationBase::set_geometry
virtual void set_geometry(ICaloGeometry *geo)
Method to set the geometry access pointer.
Definition: TFCSParametrizationBase.cxx:24
GeoLoadGpu::get_ncells
unsigned long get_ncells() const
Definition: GeoLoadGpu.h:46
jobOptions.ParticleID
ParticleID
Definition: jobOptions.decayer.py:85
TFCSLateralShapeParametrizationHitChain::TFCSLateralShapeParametrizationHitChain
TFCSLateralShapeParametrizationHitChain(const char *name=nullptr, const char *title=nullptr)
Definition: TFCSLateralShapeParametrizationHitChain.cxx:48
FCSFatal
@ FCSFatal
Definition: TFCSParametrizationBase.h:41
SUBPOS_ENT
@ SUBPOS_ENT
Definition: FastCaloSim_CaloCell_ID.h:12
GeoLoadGpu::index2cell
const CaloDetDescrElement_Gpu * index2cell(unsigned long index)
Definition: GeoLoadGpu.h:34
TFCSLateralShapeParametrizationHitChain::m_number_of_hits_simul
TFCSLateralShapeParametrizationHitBase * m_number_of_hits_simul
Definition: TFCSLateralShapeParametrizationHitChain.h:103
Chain0_Args
Definition: Args.h:17
FCSSuccess
@ FCSSuccess
Definition: TFCSParametrizationBase.h:41
TFCSLateralShapeParametrizationHitChain::set_daughter
virtual void set_daughter(unsigned int ind, TFCSParametrizationBase *param) override
Some derived classes have daughter instances of TFCSParametrizationBase objects The set_daughter meth...
Definition: TFCSLateralShapeParametrizationHitChain.cxx:105
TFCSLateralShapeParametrizationHitChain::m_ninit
unsigned int m_ninit
Definition: TFCSLateralShapeParametrizationHitChain.h:104
TFCSLateralShapeParametrizationHitBase::get_number_of_hits
virtual int get_number_of_hits(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Call get_number_of_hits() only once per shower simulation, as it could be calculated with random numb...
Definition: TFCSLateralShapeParametrizationHitBase.cxx:25
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
pmontree.opt
opt
Definition: pmontree.py:16
TFCSTruthState::pdgid
int pdgid() const
Definition: TFCSTruthState.h:25
TFCSHitCellMapping.h
GeoLoadGpu
Definition: GeoLoadGpu.h:17
SUBPOS_EXT
@ SUBPOS_EXT
Definition: FastCaloSim_CaloCell_ID.h:13
TFCSLateralShapeParametrizationHitChain::m_chain
Chain_t m_chain
Definition: TFCSLateralShapeParametrizationHitChain.h:94
TFCSLateralShapeParametrization::calosample
int calosample() const
Definition: TFCSLateralShapeParametrization.h:34
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TFCSExtrapolationState.h
LArCellConditions.geo
bool geo
Definition: LArCellConditions.py:46
python.TriggerHandler.verbose
verbose
Definition: TriggerHandler.py:297
DEBUG
#define DEBUG
Definition: page_access.h:11
CxxUtils::reset
constexpr std::enable_if_t< is_bitmask_v< E >, E & > reset(E &lhs, E rhs)
Convenience function to clear bits in a class enum bitmask.
Definition: bitmask.h:243
TFCS1DFunction.h
TFCSHitCellMappingWiggle.h
TFCSSimulationState::E
double E() const
Definition: TFCSSimulationState.h:42
merge.status
status
Definition: merge.py:17
TFCSSimulationState.h
FastCaloSim_CaloCell_ID.h
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
ICaloGeometry.h
TFCSLateralShapeParametrization
Definition: TFCSLateralShapeParametrization.h:10
TFCSTruthState
Definition: TFCSTruthState.h:13
TFCSSimulationState
Definition: TFCSSimulationState.h:32
MIN_GPU_HITS
#define MIN_GPU_HITS
Definition: CaloGpuGeneral.h:11
python.CaloScaleNoiseConfig.args
args
Definition: CaloScaleNoiseConfig.py:80
TFCSLateralShapeParametrizationHitChain::chain
const Chain_t & chain() const
Definition: TFCSLateralShapeParametrizationHitChain.h:50
checkFileSG.ind
list ind
Definition: checkFileSG.py:118
physval_make_web_display.failed
bool failed
Definition: physval_make_web_display.py:290
ISF_FCS::MLogging::msgLvl
bool msgLvl(const MSG::Level lvl) const
Check whether the logging system is active at the provided verbosity level.
Definition: MLogging.h:222
TFCSLateralShapeParametrizationHitChain::simulate
virtual FCSReturnCode simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const override
Method in all derived classes to do some simulation.
Definition: TFCSLateralShapeParametrizationHitChain.cxx:233
TFCSLateralShapeParametrizationHitChain::Print
void Print(Option_t *option="") const override
Do not persistify!
Definition: TFCSLateralShapeParametrizationHitChain.cxx:448