ATLAS Offline Software
Loading...
Searching...
No Matches
TFCSParametrizationBase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ISF_FASTCALOSIMEVENT_TFCSParametrizationBase_h
6#define ISF_FASTCALOSIMEVENT_TFCSParametrizationBase_h
7
8#include <set>
9#include <map>
10#include <mutex>
11
14
15class ICaloGeometry;
17class TFCSTruthState;
19
39
42
43#define FCS_RETRY_COUNT 3
44
45
46class TFCSParametrizationBase : public TNamed, public ISF_FCS::MLogging {
47public:
48 TFCSParametrizationBase(const char *name = nullptr,
49 const char *title = nullptr);
50
54 14)
55 };
56
57 virtual bool is_match_pdgid(int /*id*/) const {
58 return TestBit(kMatchAllPDGID);
59 };
60 virtual bool is_match_Ekin(float /*Ekin*/) const { return false; };
61 virtual bool is_match_eta(float /*eta*/) const { return false; };
62
63 virtual bool is_match_Ekin_bin(int /*Ekin_bin*/) const { return false; };
64 virtual bool is_match_calosample(int /*calosample*/) const { return false; };
65
66 virtual bool is_match_all_pdgid() const { return TestBit(kMatchAllPDGID); };
67 virtual bool is_match_all_Ekin() const { return false; };
68 virtual bool is_match_all_eta() const { return false; };
69 virtual bool is_match_all_Ekin_bin() const { return false; };
70 virtual bool is_match_all_calosample() const { return false; };
71
72 virtual const std::set<int> &pdgid() const {
73 static const std::set<int> empty;
74 return empty;
75 };
76 virtual double Ekin_nominal() const { return init_Ekin_nominal; };
77 virtual double Ekin_min() const { return init_Ekin_min; };
78 virtual double Ekin_max() const { return init_Ekin_max; };
79 virtual double eta_nominal() const { return init_eta_nominal; };
80 virtual double eta_min() const { return init_eta_min; };
81 virtual double eta_max() const { return init_eta_max; };
82
83 virtual void set_match_all_pdgid() { SetBit(kMatchAllPDGID); };
84 virtual void reset_match_all_pdgid() { ResetBit(kMatchAllPDGID); };
85
88 virtual void set_geometry(ICaloGeometry *geo);
89
93 virtual unsigned int size() const { return 0; };
94
98 virtual const TFCSParametrizationBase *
99 operator[](unsigned int /*ind*/) const {
100 return nullptr;
101 };
102
106 virtual TFCSParametrizationBase *operator[](unsigned int /*ind*/) {
107 return nullptr;
108 };
109
113 virtual void set_daughter(unsigned int /*ind*/,
114 TFCSParametrizationBase * /*param*/){};
115
119 virtual bool operator==(const TFCSParametrizationBase &ref) const {
120 return compare(ref);
121 };
122
124 virtual FCSReturnCode simulate(TFCSSimulationState &simulstate,
125 const TFCSTruthState *truth,
126 const TFCSExtrapolationState *extrapol) const;
127
130 virtual void CleanAuxInfo(TFCSSimulationState & /*simulstate*/) const {};
131
133 void Print(Option_t *option = "") const;
134
135
136 struct Duplicate_t {
138 std::vector<TFCSParametrizationBase *> mother;
139 std::vector<unsigned int> index;
140 };
141 typedef std::map<TFCSParametrizationBase *, Duplicate_t> FindDuplicates_t;
142 typedef std::map<std::string, FindDuplicates_t> FindDuplicateClasses_t;
144 void RemoveDuplicates();
145 void RemoveNameTitle();
146
147#ifdef USE_GPU
148 // will not compile by default
149 void Copy2GPU(); // copy all the paramterization files to GPU
150#endif
151
152protected:
153 static constexpr double init_Ekin_nominal = 0;
154 static constexpr double init_Ekin_min = 0;
155 static constexpr double init_Ekin_max = 14000000;
156 static constexpr double init_eta_nominal = 0;
157 static constexpr double init_eta_min = -100;
158 static constexpr double init_eta_max = 100;
159
160
161 bool compare(const TFCSParametrizationBase &ref) const;
162
163#if defined(__FastCaloSimStandAlone__)
164public:
167 using MLogging::setLevel;
168 virtual void setLevel(int level, bool recursive) {
169 this->setLevel(level);
170 if (recursive)
171 for (unsigned int i = 0; i < size(); ++i)
172 (*this)[i]->setLevel(level, recursive);
173 }
174#endif
175
176private:
177
178 ClassDef(TFCSParametrizationBase, 3) // TFCSParametrizationBase
179};
180
181#endif // End header guards
const boost::regex ref(r_ef)
FCSReturnCode
Base class for all FastCaloSim parametrizations Functionality in derivde classes is provided through ...
static const Attributes_t empty
Define macros for attributes used to control the static checker.
Cut down AthMessaging.
Definition MLogging.h:176
virtual void setLevel(MSG::Level lvl)
Update outputlevel.
Definition MLogging.cxx:105
MSG::Level level() const
Retrieve output level.
Definition MLogging.h:201
virtual void setLevel(MSG::Level lvl)
Update outputlevel.
Definition MLogging.cxx:105
virtual FCSReturnCode simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
Method in all derived classes to do some simulation.
virtual bool operator==(const TFCSParametrizationBase &ref) const
The == operator compares the content of instances.
virtual bool is_match_all_Ekin_bin() const
void FindDuplicates(FindDuplicateClasses_t &dup)
virtual bool is_match_Ekin_bin(int) const
virtual const std::set< int > & pdgid() const
static constexpr double init_Ekin_nominal
virtual bool is_match_all_eta() const
static constexpr double init_eta_max
Do not persistify!
virtual bool is_match_all_Ekin() const
virtual bool is_match_all_calosample() const
virtual void CleanAuxInfo(TFCSSimulationState &) const
Method in all derived classes to delete objects stored in the simulstate AuxInfo.
virtual double Ekin_min() const
virtual void set_geometry(ICaloGeometry *geo)
Method to set the geometry access pointer.
static constexpr double init_Ekin_max
Do not persistify!
virtual bool is_match_calosample(int) const
virtual double eta_max() const
virtual void set_daughter(unsigned int, TFCSParametrizationBase *)
Some derived classes have daughter instances of TFCSParametrizationBase objects The set_daughter meth...
static constexpr double init_eta_nominal
Do not persistify!
std::map< TFCSParametrizationBase *, Duplicate_t > FindDuplicates_t
static constexpr double init_eta_min
Do not persistify!
virtual unsigned int size() const
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
static constexpr double init_Ekin_min
Do not persistify!
virtual double eta_min() const
FCSStatusBits
Status bit for FCS needs.
@ kMatchAllPDGID
Set this bit in the TObject bit field if valid for all PDGID.
std::map< std::string, FindDuplicates_t > FindDuplicateClasses_t
virtual double Ekin_max() const
virtual TFCSParametrizationBase * operator[](unsigned int)
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
void Print(Option_t *option="") const
Print object information.
virtual bool is_match_eta(float) const
virtual const TFCSParametrizationBase * operator[](unsigned int) const
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
virtual bool is_match_all_pdgid() const
bool compare(const TFCSParametrizationBase &ref) const
Do not persistify!
virtual double eta_nominal() const
virtual bool is_match_Ekin(float) const
TFCSParametrizationBase(const char *name=nullptr, const char *title=nullptr)
virtual double Ekin_nominal() const
virtual bool is_match_pdgid(int) const
Definition index.py:1
std::vector< TFCSParametrizationBase * > mother