ATLAS Offline Software
LhoodMM_tools.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 Lhood_MM_tools_h
6 #define Lhood_MM_tools_h
7 
8 #include "Rtypes.h"
9 #include "TMatrixT.h"
13 
14 #include <vector>
15 
16 class TH1;
17 class TH2;
18 class TH3;
19 class TMinuit_LHMM;
20 class TDirectory;
21 
22 namespace CP
23 {
24 
26 #ifndef FAKEBKGTOOLS_ATLAS_ENVIRONMENT
27  , public FakeBkgTools::ExtraPropertyManager<LhoodMM_tools, BaseFakeBkgTool>
28 #endif
29 {
30 
32 
33  protected:
34 
35  virtual void reset();
36 
37  // implement base class methods
38  virtual StatusCode addEventCustom() override;
39 
40  public:
41 
42  LhoodMM_tools(const std::string& name);
44 
45  virtual StatusCode initialize() override;
46 
47  // implement base class methods
48 
49  virtual StatusCode getTotalYield(float& yield, float& statErrUp, float& statErrDown) override final;
50  virtual StatusCode register1DHistogram(TH1* h1, const float *val) override;
51  virtual StatusCode register2DHistogram(TH2* h2, const float *xval, const float *yval) override;
52  virtual StatusCode register3DHistogram(TH3* h3, const float *xval, const float *yval, const float *zval) override;
53 
54  double nfakes(Double_t *poserr, Double_t *negerr);
55 
56  double nfakes_std(double *error);
57  double nfakes_std_perEventWeight(double *error);
58 
59  StatusCode setFitType(const std::string& ft);
60 
61  Int_t getFitStatus() {return m_fitStatus;}
62 
63  void setPrintLevel(Int_t printLevel) { m_printLevel = printLevel;}
64 
66 
67  virtual StatusCode saveProgress(TDirectory* dir) override;
68 
70 
71  bool perfectFit() { return m_perfectFit;}
72  protected:
74  virtual FakeBkgTools::Client clientForDB() override final;
75 
76  private:
77 
78  // pointer to instance of LhoodMM_tools to use in a given fit
80 
82  bool m_prevSave;
84 
86 
87  #ifndef __CLING__
88  std::vector<std::unique_ptr<FakeBkgTools::FinalState> > m_fsvec;
89  #else
90  std::vector<int> m_fsvec;
91  #endif
95  std::vector<std::vector<int>> m_real_indices, m_fake_indices;
97 
99 
101 
103 
104  float m_maxWeight;
105 
107 
108  inline static const int s_nLepMax = 6;
109  inline static const int s_maxRank = 64; // i.e. 2^nLepMax
110 
111 
112  std::vector < std::vector < std::vector < double > > > m_coeffs;
113 
114  std::map<TH1*, std::vector< LhoodMMFitInfo > > m_fitInfo_1dhisto_map;
115  std::map<TH2*, std::vector< LhoodMMFitInfo > > m_fitInfo_2dhisto_map;
116  std::map<TH3*, std::vector< LhoodMMFitInfo > > m_fitInfo_3dhisto_map;
117 
119  std::vector< std::vector < double > > m_OSfrac;
120 
122 
124 
126 
127  Int_t m_fitStatus;
128 
130 
131  std::vector<std::shared_ptr<TMatrixT<double>> > m_nrf_mat_vec;
132  std::vector<std::shared_ptr<TMatrixT<double>> > m_MMmatrix_vec;
133  std::vector<std::shared_ptr<TMatrixT<double>>> m_ntlpred_vec;
134 
135  unsigned m_lastSaveIndex;
136 
137  //mathematical constants
138  inline static const double s_piover2 = 1.57079632679489661923;
139  inline static const double s_piover4 = 0.785398163397448309616;
140 
141  StatusCode setup();
142 
143  static double logPoisson(double obs, double pred);
144 
145  StatusCode addEventCustom(const std::vector<bool>& isTight_vals,
146  const std::vector<FakeBkgTools::Efficiency>& realEff_vals,
147  const std::vector<FakeBkgTools::Efficiency>& fakeEff_vals,
148  const std::vector<int>& charges,
149  float weight);
150 
153  const LhoodMMEvent& mmevt);
154 
155  static void fcn_nlep(Int_t &npar , Double_t *gin , Double_t &f, Double_t *par, Int_t iflag );
156  static void fcn_minnlep_maxnlep(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag);
157 
158  void get_init_pars(std::vector<double> &init_pars, int nlep);
159  void get_analytic(std::vector<double>& nrf, const int nlep);
160 
161  double fixPosErr(double n_fake_fit, TMinuit_LHMM* lhoodFit);
162  double fixNegErr(double n_fake_fit, TMinuit_LHMM* lhoodFit);
163  void mapLhood(TMinuit_LHMM* lhoodFit, int nlep, double min, double max);
164 
166  StatusCode fillHisto_internal(const std::vector< LhoodMMFitInfo >& fitInfo_vec, TH1* h);
167 };
168 
169 }
170 
171 #endif
CP::LhoodMM_tools::m_nfakes_std_err_perEventWeight
double m_nfakes_std_err_perEventWeight
Definition: LhoodMM_tools.h:123
CP::LhoodMM_tools::s_piover4
static const double s_piover4
Definition: LhoodMM_tools.h:139
CP::LhoodMM_tools::setFitType
StatusCode setFitType(const std::string &ft)
Definition: LhoodMM_tools.cxx:146
CP::LhoodMM_tools::m_perfectFit
bool m_perfectFit
Definition: LhoodMM_tools.h:83
CP::BaseFakeBkgTool
Definition: BaseFakeBkgTool.h:42
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
CP::LhoodMM_tools::fcn_minnlep_maxnlep
static void fcn_minnlep_maxnlep(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
Definition: LhoodMM_tools.cxx:557
CP::LhoodMM_tools::fillHistograms
StatusCode fillHistograms()
Definition: LhoodMM_tools.cxx:1132
PlotCalibFromCool.ft
ft
Definition: PlotCalibFromCool.py:329
CP::LhoodMM_tools::addEventCustom
virtual StatusCode addEventCustom() override
Definition: LhoodMM_tools.cxx:262
max
#define max(a, b)
Definition: cfImp.cxx:41
CP::LhoodMM_tools::m_real_indices
std::vector< std::vector< int > > m_real_indices
Definition: LhoodMM_tools.h:95
CP::LhoodMM_tools::LhoodMM_tools
LhoodMM_tools(const std::string &name)
Definition: LhoodMM_tools.cxx:41
CP::LhoodMM_tools::m_needToResize
bool m_needToResize
Definition: LhoodMM_tools.h:98
CP::LhoodMM_tools::getTotalYield
virtual StatusCode getTotalYield(float &yield, float &statErrUp, float &statErrDown) override final
returns the accumulated fake lepton background yield (or compute it, in the case of the likelihood ma...
Definition: LhoodMM_tools.cxx:302
LhoodMMEvent.h
CP::LhoodMM_tools::fixNegErr
double fixNegErr(double n_fake_fit, TMinuit_LHMM *lhoodFit)
Definition: LhoodMM_tools.cxx:1581
CP::LhoodMM_tools::logPoisson
static double logPoisson(double obs, double pred)
Definition: LhoodMM_tools.cxx:544
CP::LhoodMM_tools::m_alreadyMerged
bool m_alreadyMerged
Definition: LhoodMM_tools.h:106
CP::LhoodMM_tools::m_nrf_mat_vec
std::vector< std::shared_ptr< TMatrixT< double > > > m_nrf_mat_vec
Definition: LhoodMM_tools.h:131
FakeBkgTools::Client
Client
Definition: FakeBkgInternals.h:141
CP::LhoodMM_tools::nfakes_std_perEventWeight
double nfakes_std_perEventWeight(double *error)
Definition: LhoodMM_tools.cxx:1237
CP::LhoodMM_tools::m_fsvec
std::vector< std::unique_ptr< FakeBkgTools::FinalState > > m_fsvec
Definition: LhoodMM_tools.h:88
CP::LhoodMM_tools::mapLhood
void mapLhood(TMinuit_LHMM *lhoodFit, int nlep, double min, double max)
CP::LhoodMM_tools::m_ntlpred_vec
std::vector< std::shared_ptr< TMatrixT< double > > > m_ntlpred_vec
Definition: LhoodMM_tools.h:133
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
read_hist_ntuple.h1
h1
Definition: read_hist_ntuple.py:21
CP::LhoodMM_tools::m_requireSS
bool m_requireSS
Definition: LhoodMM_tools.h:96
CP::LhoodMM_tools::~LhoodMM_tools
~LhoodMM_tools()
Definition: LhoodMM_tools.cxx:56
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
CP::LhoodMM_tools::register3DHistogram
virtual StatusCode register3DHistogram(TH3 *h3, const float *xval, const float *yval, const float *zval) override
associates a 3D histogram to the tool, to obtain a binned estimate of the fake lepton background
Definition: LhoodMM_tools.cxx:212
CP::IFakeBkgTool
Top-level interface for the tools providing an estimate of the fake lepton background All the tools,...
Definition: IFakeBkgTool.h:26
CP::LhoodMM_tools::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: LhoodMM_tools.cxx:68
CP::LhoodMM_tools::perfectFit
bool perfectFit()
Definition: LhoodMM_tools.h:71
CP::LhoodMM_tools::nfakes
double nfakes(Double_t *poserr, Double_t *negerr)
Definition: LhoodMM_tools.cxx:746
CP::LhoodMM_tools::m_requireOS
bool m_requireOS
Definition: LhoodMM_tools.h:96
CP::LhoodMM_tools::m_fitInfo_1dhisto_map
std::map< TH1 *, std::vector< LhoodMMFitInfo > > m_fitInfo_1dhisto_map
Definition: LhoodMM_tools.h:114
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
CP::LhoodMM_tools::m_curr_nlep
int m_curr_nlep
Definition: LhoodMM_tools.h:92
CP::LhoodMM_tools::m_printLevel
Int_t m_printLevel
Definition: LhoodMM_tools.h:129
CP::LhoodMM_tools::m_minnlep
int m_minnlep
Definition: LhoodMM_tools.h:93
CP::LhoodMM_tools::m_coeffs
std::vector< std::vector< std::vector< double > > > m_coeffs
Definition: LhoodMM_tools.h:112
CP::LhoodMM_tools::setup
StatusCode setup()
Definition: LhoodMM_tools.cxx:526
CP::LhoodMM_tools::get_analytic
void get_analytic(std::vector< double > &nrf, const int nlep)
Definition: LhoodMM_tools.cxx:1333
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CP::LhoodMM_tools::m_MMmatrix_vec
std::vector< std::shared_ptr< TMatrixT< double > > > m_MMmatrix_vec
Definition: LhoodMM_tools.h:132
CP::LhoodMM_tools::m_maxWeight
float m_maxWeight
Definition: LhoodMM_tools.h:104
CP::LhoodMM_tools::m_global_fitInfo
LhoodMMFitInfo m_global_fitInfo
Definition: LhoodMM_tools.h:81
CP::LhoodMM_tools::mergeSubJobs
StatusCode mergeSubJobs()
Definition: LhoodMM_tools.cxx:1700
CP::LhoodMM_tools::fcn_nlep
static void fcn_nlep(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag)
Definition: LhoodMM_tools.cxx:643
TH3
Definition: rootspy.cxx:440
CP::LhoodMM_tools::get_init_pars
void get_init_pars(std::vector< double > &init_pars, int nlep)
Definition: LhoodMM_tools.cxx:1243
plotting.yearwise_efficiency.yval
float yval
Definition: yearwise_efficiency.py:43
BaseFakeBkgTool.h
CP::LhoodMM_tools::m_fitStatus
Int_t m_fitStatus
Definition: LhoodMM_tools.h:127
CP::LhoodMM_tools::m_maxnlep_loose
int m_maxnlep_loose
Definition: LhoodMM_tools.h:93
CP::LhoodMM_tools::m_prevSave
bool m_prevSave
Definition: LhoodMM_tools.h:82
CP::LhoodMM_tools::m_fitInfo_2dhisto_map
std::map< TH2 *, std::vector< LhoodMMFitInfo > > m_fitInfo_2dhisto_map
Definition: LhoodMM_tools.h:115
plotting.yearwise_efficiency.xval
float xval
Definition: yearwise_efficiency.py:42
TH2
Definition: rootspy.cxx:373
CP::LhoodMM_tools::m_doFakeFactor
bool m_doFakeFactor
Definition: LhoodMM_tools.h:100
beamspotman.dir
string dir
Definition: beamspotman.py:623
min
#define min(a, b)
Definition: cfImp.cxx:40
CP::LhoodMMFitInfo
Definition: LhoodMMFitInfo.h:13
CP::LhoodMM_tools::clientForDB
virtual FakeBkgTools::Client clientForDB() override final
This indicates which type of efficiencies/fake factor need to be filled.
Definition: LhoodMM_tools.cxx:62
CP::LhoodMM_tools::m_lastSaveIndex
unsigned m_lastSaveIndex
Definition: LhoodMM_tools.h:135
CP::LhoodMM_tools::m_fixNormalization
bool m_fixNormalization
Definition: LhoodMM_tools.h:102
private
#define private
Definition: DetDescrConditionsDict_dict_fixes.cxx:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
LhoodMMEvent
Definition: LhoodMMEvent.h:11
LhoodMMFitInfo.h
CP::LhoodMM_tools::m_fitInfo_3dhisto_map
std::map< TH3 *, std::vector< LhoodMMFitInfo > > m_fitInfo_3dhisto_map
Definition: LhoodMM_tools.h:116
CP::LhoodMM_tools::s_maxRank
static const int s_maxRank
Definition: LhoodMM_tools.h:109
CP::LhoodMM_tools::getFitStatus
Int_t getFitStatus()
Definition: LhoodMM_tools.h:61
CP::LhoodMM_tools::setPrintLevel
void setPrintLevel(Int_t printLevel)
Definition: LhoodMM_tools.h:63
CP::LhoodMM_tools::nfakes_std
double nfakes_std(double *error)
Definition: LhoodMM_tools.cxx:1231
CP::LhoodMM_tools::m_current_lhoodMM_tool
static LhoodMM_tools * m_current_lhoodMM_tool
Definition: LhoodMM_tools.h:79
h
CP::LhoodMM_tools::m_maxnlep
int m_maxnlep
Definition: LhoodMM_tools.h:93
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
CP::LhoodMM_tools::incrementMatrices
StatusCode incrementMatrices(const LhoodMMEvent &mmevt)
Definition: LhoodMM_tools.cxx:324
TH1
Definition: rootspy.cxx:268
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
CP::LhoodMM_tools::m_dilep_SSfrac_denom
double m_dilep_SSfrac_denom
Definition: LhoodMM_tools.h:118
CP::LhoodMM_tools::s_nLepMax
static const int s_nLepMax
Definition: LhoodMM_tools.h:108
CP::LhoodMM_tools::fillHisto_internal
StatusCode fillHisto_internal(const std::vector< LhoodMMFitInfo > &fitInfo_vec, TH1 *h)
Definition: LhoodMM_tools.cxx:1159
CP::LhoodMM_tools
Definition: LhoodMM_tools.h:29
CP::LhoodMM_tools::reset
virtual void reset()
Definition: LhoodMM_tools.cxx:73
CP::LhoodMM_tools::fixPosErr
double fixPosErr(double n_fake_fit, TMinuit_LHMM *lhoodFit)
Definition: LhoodMM_tools.cxx:1490
CP::LhoodMM_tools::incrementOneMatrixSet
StatusCode incrementOneMatrixSet(LhoodMMFitInfo &fitInfo, const LhoodMMEvent &mmevt)
Definition: LhoodMM_tools.cxx:415
CP::LhoodMM_tools::set_do_std_perEventWeight
void set_do_std_perEventWeight(bool val)
Definition: LhoodMM_tools.h:65
CP::LhoodMM_tools::register2DHistogram
virtual StatusCode register2DHistogram(TH2 *h2, const float *xval, const float *yval) override
associates a 2D histogram to the tool, to obtain a binned estimate of the fake lepton background the ...
Definition: LhoodMM_tools.cxx:187
CP::LhoodMM_tools::m_theta_tot_start_index
int m_theta_tot_start_index
Definition: LhoodMM_tools.h:94
CP::LhoodMM_tools::m_fake_indices
std::vector< std::vector< int > > m_fake_indices
Definition: LhoodMM_tools.h:95
CP::LhoodMM_tools::m_OSfrac
std::vector< std::vector< double > > m_OSfrac
Definition: LhoodMM_tools.h:119
CP::LhoodMM_tools::m_dilep_SSfrac_num
double m_dilep_SSfrac_num
Definition: LhoodMM_tools.h:118
CP::LhoodMM_tools::saveProgress
virtual StatusCode saveProgress(TDirectory *dir) override
Definition: LhoodMM_tools.cxx:1667
CP::LhoodMM_tools::m_nfakes_std_perEventWeight
double m_nfakes_std_perEventWeight
Definition: LhoodMM_tools.h:123
error
Definition: IImpactPoint3dEstimator.h:70
CP::LhoodMM_tools::m_current_fitInfo
const LhoodMMFitInfo * m_current_fitInfo
Definition: LhoodMM_tools.h:85
CP::LhoodMM_tools::m_do_std_perEventWeight
bool m_do_std_perEventWeight
Definition: LhoodMM_tools.h:125
CP::LhoodMM_tools::s_piover2
static const double s_piover2
Definition: LhoodMM_tools.h:138
CP::LhoodMM_tools::m_nfakes_std
double m_nfakes_std
Definition: LhoodMM_tools.h:121
TMinuit_LHMM
Definition: TMinuit_LHMM.h:12
CP::LhoodMM_tools::m_nfakes_std_err
double m_nfakes_std_err
Definition: LhoodMM_tools.h:121
CP::LhoodMM_tools::register1DHistogram
virtual StatusCode register1DHistogram(TH1 *h1, const float *val) override
associates a 1D histogram to the tool, to obtain a binned estimate of the fake lepton background the ...
Definition: LhoodMM_tools.cxx:159