ATLAS Offline Software
Loading...
Searching...
No Matches
TFCSPCAEnergyParametrization.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ISF_FASTCALOSIMEVENT_TFCSPCAEnergyParametrization_h
6#define ISF_FASTCALOSIMEVENT_TFCSPCAEnergyParametrization_h
7
11#include "TMatrixF.h"
12#include "TMatrixDSym.h"
13#include "TVectorF.h"
14#include "TFile.h"
15
16class TH1;
17
19public:
21 // Assuming an extrem h_totalE_ratio histogram that would cause a retry in
22 // 50% of the cases,
23 // returning FCSRetry+20 will cause an accidental WARNING for every
24 // 2^10=1024 simulated particles and
25 // an accidental FATAL for every 2^20, which should be safe even for largest
26 // scale productions
28 };
29
30 TFCSPCAEnergyParametrization(const char *name = nullptr,
31 const char *title = nullptr);
32
33 virtual FCSReturnCode
34 simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth,
35 const TFCSExtrapolationState *extrapol) const override;
36
37 int n_pcabins() const { return m_numberpcabins; };
38 virtual int n_bins() const override { return m_numberpcabins; };
39 const std::vector<int> &get_layers() const { return m_RelevantLayers; };
40
41 virtual bool is_match_Ekin_bin(int Ekin_bin) const override;
42 virtual bool is_match_calosample(int calosample) const override;
43 virtual bool is_match_all_Ekin_bin() const override { return true; };
44 virtual bool is_match_all_calosample() const override { return false; };
45
46 static void P2X(TVectorD *, TVectorD *, TMatrixD *, int, const double *,
47 double *, int);
48 bool loadInputs(TFile *file);
49 bool loadInputs(TFile *file, const std::string &);
50
51 void clean();
52
53 void Print(Option_t *option = "") const override;
54
61
62 void set_totalE_probability_ratio(int Ekin_bin, TH1 *hist);
63 TH1 *get_totalE_probability_ratio(int Ekin_bin) const;
64
66
67private:
68 std::vector<int> m_RelevantLayers;
69
70 std::vector<TMatrixD *> m_EV;
71 std::vector<TVectorD *> m_MeanValues;
72 std::vector<TVectorD *> m_SigmaValues;
73 std::vector<TVectorD *> m_Gauss_means;
74 std::vector<TVectorD *> m_Gauss_rms;
75 std::vector<std::vector<TFCS1DFunction *>> m_cumulative;
76
77 std::vector<TH1 *> m_totalE_probability_ratio;
78
80
82
83 ClassDefOverride(TFCSPCAEnergyParametrization,
84 3) // TFCSPCAEnergyParametrization
85};
86
87#endif
FCSReturnCode
Base class for all FastCaloSim parametrizations Functionality in derivde classes is provided through ...
TFCSEnergyParametrization(const char *name=nullptr, const char *title=nullptr)
virtual bool is_match_calosample(int calosample) const override
const std::vector< int > & get_layers() const
static void P2X(TVectorD *, TVectorD *, TMatrixD *, int, const double *, double *, int)
virtual bool is_match_all_Ekin_bin() const override
virtual int n_bins() const override
TH1 * get_totalE_probability_ratio(int Ekin_bin) const
virtual bool is_match_all_calosample() const override
void set_totalE_probability_ratio(int Ekin_bin, TH1 *hist)
void Print(Option_t *option="") const override
virtual FCSReturnCode simulate(TFCSSimulationState &simulstate, const TFCSTruthState *truth, const TFCSExtrapolationState *extrapol) const override
Method in all derived classes to do some simulation.
virtual bool is_match_Ekin_bin(int Ekin_bin) const override
std::vector< std::vector< TFCS1DFunction * > > m_cumulative
TFCSPCAEnergyParametrization(const char *name=nullptr, const char *title=nullptr)
TFile * file