24 chain().shrink_to_fit();
31 Int_t retry_warning = 1;
34 for (
int i = 0; i <= retry; i++) {
35 if (i >= retry_warning)
36 ATH_MSG_WARNING(
"TFCSParametrizationPDGIDSelectChain::simulate(): Retry "
38 << i <<
"/" << retry);
41 for (
const auto ¶m :
chain()) {
45 ?
", abort PDGID loop afterwards"
46 :
", continue PDGID loop afterwards"));
47 if (param->is_match_pdgid(truth->
pdgid())) {
49 <<
", now run: " << param->GetName()
51 ?
", abort PDGID loop afterwards"
52 :
", continue PDGID loop afterwards"));
56 retry_warning = retry >> 1;
57 if (retry_warning < 1)
75 "TFCSParametrizationChain::simulate(): Simulate call failed after "
76 << retry <<
" retries");
95 chain.setLevel(MSG::DEBUG);
101 chain.push_back(param);
105 chain.push_back(param);
107 for (
int i = 0; i < 3; ++i) {
111 chain.push_back(param);
114 for (
int i = 3; i > 0; --i) {
118 chain.push_back(param);
123 chain.push_back(param);
127 chain.push_back(param);
133 chain.simulate(*simulstate, truth, extrapol);
136 chain.simulate(*simulstate, truth, extrapol);
139 chain.set_RetryChainFromStart();
140 chain.simulate(*simulstate, truth, extrapol);
141 chain.reset_RetryChainFromStart();
147 chain.set_SimulateOnlyOnePDGID();
150 chain.simulate(*simulstate, truth, extrapol);
153 chain.simulate(*simulstate, truth, extrapol);
156 chain.set_RetryChainFromStart();
157 chain.simulate(*simulstate, truth, extrapol);
158 chain.reset_RetryChainFromStart();
#define ATH_MSG_WARNING(x)
#define ATH_MSG_NOCLASS(logger_name, x)
FCSReturnCode
Base class for all FastCaloSim parametrizations Functionality in derivde classes is provided through ...
virtual void setLevel(MSG::Level lvl)
Update outputlevel.
virtual void set_match_all_pdgid()
FCSReturnCode simulate_and_retry(TFCSParametrizationBase *parametrization, TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const
void recalc_Ekin_eta_intersect()
const Chain_t & chain() const
void recalc_pdgid_union()
virtual unsigned int size() const override
Some derived classes have daughter instances of TFCSParametrizationBase objects The size() and operat...
static void unit_test(TFCSSimulationState *simulstate=nullptr, TFCSTruthState *truth=nullptr, TFCSExtrapolationState *extrapol=nullptr)
virtual void recalc() override
Default is to call recalc_pdgid_intersect() and recalc_Ekin_eta_intersect()
bool SimulateOnlyOnePDGID() const
virtual FCSReturnCode simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const override
Method in all derived classes to do some simulation.
TFCSParametrizationPDGIDSelectChain(const char *name=nullptr, const char *title=nullptr)
TFCSParametrization(const char *name=nullptr, const char *title=nullptr)
virtual void set_pdgid(int id)
static Root::TMsgLogger logger("iLumiCalc")