ATLAS Offline Software
Loading...
Searching...
No Matches
TFCSLateralShapeParametrizationHitChain.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TFCSLateralShapeParametrizationHitChain_h
6#define TFCSLateralShapeParametrizationHitChain_h
7
10#include <vector>
11
12class ICaloGeometry;
13
16public:
17#ifdef USE_GPU
18 // modify the construction function in order to get the geometry for FCS-GPU
19 TFCSLateralShapeParametrizationHitChain(const char *name = nullptr,
20 const char *title = nullptr,
21 ICaloGeometry *geo = nullptr);
22 // override the set_geometry function for FCS-GPU
23 // the geometry is needed to assign the deposit energy to cell
24 // will not compile by default
25 virtual void set_geometry(ICaloGeometry *geo) override;
26#else
27 TFCSLateralShapeParametrizationHitChain(const char *name = nullptr,
28 const char *title = nullptr);
29#endif
30
33
34 virtual FCSReturnCode
36 TFCSSimulationState &simulstate, const TFCSTruthState *truth,
37 const TFCSExtrapolationState *extrapol) const;
38
39 virtual FCSReturnCode
40 simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth,
41 const TFCSExtrapolationState *extrapol) const override;
42
43 typedef std::vector<TFCSLateralShapeParametrizationHitBase *> Chain_t;
44 virtual unsigned int size() const override;
45 virtual const TFCSParametrizationBase *
46 operator[](unsigned int ind) const override;
47 virtual TFCSParametrizationBase *operator[](unsigned int ind) override;
48 virtual void set_daughter(unsigned int ind,
49 TFCSParametrizationBase *param) override;
50 const Chain_t &chain() const { return m_chain; };
51 Chain_t &chain() { return m_chain; };
52 void push_back(const Chain_t::value_type &value) {
53 m_chain.push_back(value);
54 };
55 void push_back_init(const Chain_t::value_type &value);
56
57 unsigned int get_nr_of_init() const { return m_ninit; };
58 void set_nr_of_init(unsigned int ninit) { m_ninit = ninit; };
59
61 virtual void
65
67 virtual int get_number_of_hits(TFCSSimulationState &simulstate,
68 const TFCSTruthState *truth,
69 const TFCSExtrapolationState *extrapol) const;
70
72 virtual float get_E_hit(TFCSSimulationState &simulstate,
73 const TFCSTruthState *truth,
74 const TFCSExtrapolationState *extrapol) const;
75
78 virtual float
80 const TFCSTruthState *truth,
81 const TFCSExtrapolationState *extrapol) const;
82
84 virtual float getMinWeight() const;
85 virtual float getMaxWeight() const;
86
87 static constexpr float s_max_sigma2_fluctuation = 1000;
88
89 void Print(Option_t *option = "") const override;
90
91protected:
92 void PropagateMSGLevel(MSG::Level level) const;
93
94 virtual bool check_all_hits_simulated(
96 TFCSSimulationState &simulstate, const TFCSTruthState *truth,
97 const TFCSExtrapolationState *extrapol, bool success) const;
98
100
101private:
102#ifdef USE_GPU
103 // the FCS-GPU will use this geometry to get the correct cell
104 // will not compile by default
105 ICaloGeometry *m_geo;
106#endif
107
109 unsigned int m_ninit = 0;
110
112 2) // TFCSLateralShapeParametrizationHitChain
113};
114
115#endif
FCSReturnCode
Base class for all FastCaloSim parametrizations Functionality in derivde classes is provided through ...
MSG::Level level() const
Retrieve output level.
Definition MLogging.h:201
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.
virtual const TFCSParametrizationBase * operator[](unsigned int ind) const override
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
TFCSLateralShapeParametrizationHitChain(const char *name=nullptr, const char *title=nullptr)
std::vector< TFCSLateralShapeParametrizationHitBase * > Chain_t
virtual FCSReturnCode simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const override
Method in all derived classes to do some simulation.
virtual unsigned int size() const override
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
virtual bool check_all_hits_simulated(TFCSLateralShapeParametrizationHitBase::Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol, bool success) const
void Print(Option_t *option="") const override
Do not persistify!
virtual float getMinWeight() const
Get minimum and maximum value of weight for hit energy reweighting.
TFCSLateralShapeParametrizationHitBase * m_number_of_hits_simul
virtual void set_daughter(unsigned int ind, TFCSParametrizationBase *param) override
Some derived classes have daughter instances of TFCSParametrizationBase objects The set_daughter meth...
virtual FCSReturnCode init_hit(TFCSLateralShapeParametrizationHitBase::Hit &hit, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
virtual void set_number_of_hits_simul(TFCSLateralShapeParametrizationHitBase *sim)
set which instance should determine the number of hits
virtual float get_E_hit(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Get hit energy from layer energy and 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.
TFCSLateralShapeParametrization(const char *name=nullptr, const char *title=nullptr)
virtual void set_geometry(ICaloGeometry *geo)
Method to set the geometry access pointer.
TFCSParametrizationBase(const char *name=nullptr, const char *title=nullptr)