ATLAS Offline Software
TForwardElectronLikelihoodTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
25 #ifndef TFORWARDELECTRONLIKELIHOODTOOL_H
26 #define TFORWARDELECTRONLIKELIHOODTOOL_H
27 
28 #include <string> // for string
29 #include <vector> // for vector
30 
31 // ROOT includes
32 #include "TFile.h"
33 #include "TH1.h"
34 
35 // Include the return objects and the base class
36 //#include "PATCore/TAccept.h"
37 //#include "PATCore/TResult.h"
38 #include "PATCore/AcceptData.h"
39 #include "PATCore/AcceptInfo.h"
40 //#include "PATCore/TCalculatorToolBase.h"
41 //#include "PATCore/TSelectorToolBase.h"
43 #include "AsgTools/IAsgTool.h"
44 #include "SafeTH1.h"
45 #include "memory"
46 
47 namespace {
48 const unsigned int IP_FBINS = 1;
49 }
50 
51 namespace LikeEnumForward {
52 enum Menu
53 {
58 };
59 
61 {
62  double likelihood;
63  double eta;
64  double eT;
65  double ip;
66 };
67 
69 {
70  double eta;
71  double eT;
72  double secondLambda;
73  double lateral;
74  double longitudinal;
75  double fracMax;
76  double centerLambda;
77  double secondR;
78  double secondDensity;
79  double significance;
80  double ip;
81 };
82 
83 } // namespace LikeEnumForward
84 
85 namespace Root {
87 {
88 
89 public:
92  const char* name = "TForwardElectronLikelihoodTool");
93 
94 public:
97 
99  const asg::AcceptInfo& getAcceptInfo() const { return m_acceptInfo; }
100 
103  asg::AcceptData accept(double likelihood,
104  double eta,
105  double eT,
106  double ip) const;
107 
110 
111  double calculate(LikeEnumForward::LHCalcVars_t& vars_struct) const;
112  double calculate(double eta,
113  double eT,
114  double secondLambda,
115  double lateral,
116  double longitudinal,
117  double centerLambda,
118  double fracMax,
119  double secondR,
120  double significance,
121  double secondDensity,
122  double ip) const;
123 
125  inline void setPDFFileName(const std::string& val) { m_pdfFileName = val; }
126 
128  inline void setVariableNames(const std::string& val)
129  {
132  }
133 
135  int loadVarHistograms(const std::string& vstr, unsigned int varIndex);
136 
138  inline void setBinning(const std::string& val) { m_ipBinning = val; }
139 
140  unsigned int getBitmask(void) const { return m_variableBitMask; }
141  inline void setBitmask(unsigned int val) { m_variableBitMask = val; };
142 
143  // Private methods
144 private:
145  // For every input "varVector", make sure elements of vector are
146  // in the same order as prescribed in fVariables
147  // Internal methods to calculate the LH discriminant from a set of variables
148  double evaluateLikelihood(const std::vector<double>& varVector,
149  double et,
150  double eta,
151  double ip = 0) const;
152  double evaluateLikelihood(const std::vector<float>& varVector,
153  double et,
154  double eta,
155  double ip = 0) const;
156 
160  unsigned int getLikelihoodBitmask(const std::string& vars) const;
161 
162  // PHILIP interpolation is unused
163  /* double InterpolateCuts(const std::vector<double>& cuts,const
164  * std::vector<double>& cuts_4gev,double et,double eta) const; */
165  /* double InterpolatePdfs(unsigned int s_or_b,unsigned int ipbin,double
166  * et,double eta,int bin,unsigned int var) const; */
167 
169  // double TransformLikelihoodOutput(double ps, double pb) const;
171  // unsigned int getLikelihoodEtaBin(double eta) const;
173  // unsigned int getLikelihoodEtBin(double et) const;
174  // Pile-up binning
175  // unsigned int getIpBin(double ip) const;
176  // get the bin names as is in the input file
177  // void getBinName(char *buffer, int etbin, int etabin) const;
178 
179 public:
183  std::vector<double> m_cutLikelihood;
189  std::vector<double> m_cutLikelihoodPileupCorrectionA;
191  std::vector<double> m_cutLikelihoodPileupCorrectionB;
193  std::string m_variableNames;
195  std::string m_pdfFileName;
196 
197  // Private methods
198 private:
201  double TransformLikelihoodOutput(double ps, double pb) const;
202 
204  static unsigned int getLikelihoodEtaBin(double eta) ;
205 
207  static unsigned int getLikelihoodEtHistBin(double eT) ;
208 
209  // Private member variables
210 private:
213  unsigned int m_variableBitMask;
214 
217 
219  std::string m_ipBinning;
220 
222  TFile* m_pdfFile{};
223 
230 
231  static const double fIpBounds[IP_FBINS + 1];
232  static const unsigned int s_fnEtBinsHist =
233  4; // number of hists stored for nominal LH
234  static const unsigned int s_fnDiscEtBins =
235  4; // number of discs stored for original LH
236  static const unsigned int s_fnEtaBins = 10;
237  static const unsigned int s_fnVariables = 8;
238  static const std::string fVariables[s_fnVariables];
239  // 5D array of unique_ptr to SafeTH1 // [sig(0)/bkg(1)][ip][et][eta][variable]
240  std::unique_ptr<EGSelectors::SafeTH1> m_fPDFbins[2][IP_FBINS][s_fnEtBinsHist][s_fnEtaBins][s_fnVariables];
241 
242  static unsigned int getIpBin(double ip) ;
243  static std::string getBinName(int etbin,
244  int etabin,
245  int ipbin,
246  const std::string& iptype) ;
247 };
248 
249 } // namespace Root
250 
251 #endif
LikeEnumForward::LHCalcVars_t::secondDensity
double secondDensity
Definition: TForwardElectronLikelihoodTool.h:78
LikeEnumForward::Menu
Menu
Definition: TForwardElectronLikelihoodTool.h:53
et
Extra patterns decribing particle interation process.
LikeEnumForward::LHCalcVars_t::secondLambda
double secondLambda
Definition: TForwardElectronLikelihoodTool.h:72
Root::TForwardElectronLikelihoodTool::setBitmask
void setBitmask(unsigned int val)
Definition: TForwardElectronLikelihoodTool.h:141
Root
Definition: GoodRunsListSelectorTool.h:30
Root::TForwardElectronLikelihoodTool::s_fnEtBinsHist
static const unsigned int s_fnEtBinsHist
Definition: TForwardElectronLikelihoodTool.h:232
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
Root::TForwardElectronLikelihoodTool::TransformLikelihoodOutput
double TransformLikelihoodOutput(double ps, double pb) const
Apply a transform to zoom into the LH output peaks.
Definition: TForwardElectronLikelihoodTool.cxx:404
SafeTH1.h
LikeEnumForward::LHAcceptVars_t::eta
double eta
Definition: TForwardElectronLikelihoodTool.h:63
Root::TForwardElectronLikelihoodTool::setBinning
void setBinning(const std::string &val)
Define the binning.
Definition: TForwardElectronLikelihoodTool.h:138
LikeEnumForward::LHCalcVars_t::eta
double eta
Definition: TForwardElectronLikelihoodTool.h:70
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
Root::TForwardElectronLikelihoodTool::loadVarHistograms
int loadVarHistograms(const std::string &vstr, unsigned int varIndex)
Load the variable histograms from the pdf file.
Definition: TForwardElectronLikelihoodTool.cxx:132
LikeEnumForward::LHCalcVars_t::longitudinal
double longitudinal
Definition: TForwardElectronLikelihoodTool.h:74
Root::TForwardElectronLikelihoodTool::m_fPDFbins
std::unique_ptr< EGSelectors::SafeTH1 > m_fPDFbins[2][IP_FBINS][s_fnEtBinsHist][s_fnEtaBins][s_fnVariables]
Definition: TForwardElectronLikelihoodTool.h:240
Root::TForwardElectronLikelihoodTool::m_cutPosition_LH
int m_cutPosition_LH
The position of the likelihood cut bit in the AcceptInfo return object.
Definition: TForwardElectronLikelihoodTool.h:229
LikeEnumForward::LHCalcVars_t::eT
double eT
Definition: TForwardElectronLikelihoodTool.h:71
LikeEnumForward::Medium
@ Medium
Definition: TForwardElectronLikelihoodTool.h:55
Root::TForwardElectronLikelihoodTool::setPDFFileName
void setPDFFileName(const std::string &val)
Add an input file that holds the PDFs.
Definition: TForwardElectronLikelihoodTool.h:125
Root::TForwardElectronLikelihoodTool::accept
asg::AcceptData accept() const
Return dummy accept with only info.
Definition: TForwardElectronLikelihoodTool.h:109
LikeEnumForward::LHAcceptVars_t::ip
double ip
Definition: TForwardElectronLikelihoodTool.h:65
Root::TForwardElectronLikelihoodTool::m_cutLikelihoodPileupCorrectionA
std::vector< double > m_cutLikelihoodPileupCorrectionA
the cut on the PU discriminant is adjusted as a function of nVtx cut + nVtx*cutA + cutB this is diffe...
Definition: TForwardElectronLikelihoodTool.h:189
Root::TForwardElectronLikelihoodTool::m_acceptInfo
asg::AcceptInfo m_acceptInfo
Accept info.
Definition: TForwardElectronLikelihoodTool.h:216
Root::TForwardElectronLikelihoodTool::calculate
double calculate(LikeEnumForward::LHCalcVars_t &vars_struct) const
Definition: TForwardElectronLikelihoodTool.cxx:303
LikeEnumForward::Loose
@ Loose
Definition: TForwardElectronLikelihoodTool.h:54
AsgMessaging.h
Root::TForwardElectronLikelihoodTool::getBinName
static std::string getBinName(int etbin, int etabin, int ipbin, const std::string &iptype)
Definition: TForwardElectronLikelihoodTool.cxx:473
Root::TForwardElectronLikelihoodTool::getIpBin
static unsigned int getIpBin(double ip)
Definition: TForwardElectronLikelihoodTool.cxx:431
Root::TForwardElectronLikelihoodTool::m_cutLikelihood
std::vector< double > m_cutLikelihood
cut on likelihood output
Definition: TForwardElectronLikelihoodTool.h:183
Root::TForwardElectronLikelihoodTool::fVariables
static const std::string fVariables[s_fnVariables]
Definition: TForwardElectronLikelihoodTool.h:238
asg::AcceptInfo
Definition: AcceptInfo.h:28
IDTPM::eT
float eT(const U &p)
Accessor utility function for getting the value of Tranverse energy.
Definition: TrackParametersHelper.h:122
Root::TForwardElectronLikelihoodTool::fIpBounds
static const double fIpBounds[IP_FBINS+1]
Definition: TForwardElectronLikelihoodTool.h:231
Root::TForwardElectronLikelihoodTool::m_pdfFileName
std::string m_pdfFileName
Name of the pdf file.
Definition: TForwardElectronLikelihoodTool.h:195
python.SystemOfUnits.ps
float ps
Definition: SystemOfUnits.py:150
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LikeEnumForward::LHCalcVars_t::lateral
double lateral
Definition: TForwardElectronLikelihoodTool.h:73
LikeEnumForward::LHCalcVars_t::ip
double ip
Definition: TForwardElectronLikelihoodTool.h:80
LikeEnumForward::LHCalcVars_t::significance
double significance
Definition: TForwardElectronLikelihoodTool.h:79
Root::TForwardElectronLikelihoodTool::m_ipBinning
std::string m_ipBinning
Deprecated.
Definition: TForwardElectronLikelihoodTool.h:219
Root::TForwardElectronLikelihoodTool::getLikelihoodEtaBin
static unsigned int getLikelihoodEtaBin(double eta)
Eta binning for pdfs and discriminant cuts.
Definition: TForwardElectronLikelihoodTool.cxx:442
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
Root::TForwardElectronLikelihoodTool
Definition: TForwardElectronLikelihoodTool.h:87
IAsgTool.h
Root::TForwardElectronLikelihoodTool::evaluateLikelihood
double evaluateLikelihood(const std::vector< double > &varVector, double et, double eta, double ip=0) const
Definition: TForwardElectronLikelihoodTool.cxx:335
Root::TForwardElectronLikelihoodTool::m_cutPosition_kinematicEt
int m_cutPosition_kinematicEt
Definition: TForwardElectronLikelihoodTool.h:227
AcceptData.h
Root::TForwardElectronLikelihoodTool::getLikelihoodEtHistBin
static unsigned int getLikelihoodEtHistBin(double eT)
Coarse Et binning. Used for the likelihood and discriminant pdfs.
Definition: TForwardElectronLikelihoodTool.cxx:455
LikeEnumForward::Tight
@ Tight
Definition: TForwardElectronLikelihoodTool.h:56
Root::TForwardElectronLikelihoodTool::TForwardElectronLikelihoodTool
TForwardElectronLikelihoodTool(const char *name="TForwardElectronLikelihoodTool")
Standard constructor.
Definition: TForwardElectronLikelihoodTool.cxx:22
Root::TForwardElectronLikelihoodTool::s_fnVariables
static const unsigned int s_fnVariables
Definition: TForwardElectronLikelihoodTool.h:237
LikeEnumForward
Definition: TForwardElectronLikelihoodTool.h:51
LikeEnumForward::LHAcceptVars_t::eT
double eT
Definition: TForwardElectronLikelihoodTool.h:64
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
asg::AsgMessaging
Class mimicking the AthMessaging class from the offline software.
Definition: AsgMessaging.h:40
LikeEnumForward::LHCalcVars_t::fracMax
double fracMax
Definition: TForwardElectronLikelihoodTool.h:75
Root::TForwardElectronLikelihoodTool::s_fnEtaBins
static const unsigned int s_fnEtaBins
Definition: TForwardElectronLikelihoodTool.h:236
LikeEnumForward::LHAcceptVars_t
Definition: TForwardElectronLikelihoodTool.h:61
Root::TForwardElectronLikelihoodTool::setVariableNames
void setVariableNames(const std::string &val)
Define the variable names.
Definition: TForwardElectronLikelihoodTool.h:128
AcceptInfo.h
Root::TForwardElectronLikelihoodTool::m_doPileupCorrection
bool m_doPileupCorrection
Apply a transform to zoom into the LH output peaks.
Definition: TForwardElectronLikelihoodTool.h:181
Root::TForwardElectronLikelihoodTool::getLikelihoodBitmask
unsigned int getLikelihoodBitmask(const std::string &vars) const
Mask out the variables ,out of all possible ones, that are not employed in the current configuration ...
Definition: TForwardElectronLikelihoodTool.cxx:493
Root::TForwardElectronLikelihoodTool::m_variableBitMask
unsigned int m_variableBitMask
The bitmask corresponding to the variables in the likelihood.
Definition: TForwardElectronLikelihoodTool.h:213
Root::TForwardElectronLikelihoodTool::s_fnDiscEtBins
static const unsigned int s_fnDiscEtBins
Definition: TForwardElectronLikelihoodTool.h:234
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
LikeEnumForward::LHCalcVars_t::centerLambda
double centerLambda
Definition: TForwardElectronLikelihoodTool.h:76
LikeEnumForward::CustomOperatingPoint
@ CustomOperatingPoint
Definition: TForwardElectronLikelihoodTool.h:57
LikeEnumForward::LHCalcVars_t::secondR
double secondR
Definition: TForwardElectronLikelihoodTool.h:77
LikeEnumForward::LHAcceptVars_t::likelihood
double likelihood
Definition: TForwardElectronLikelihoodTool.h:62
LikeEnumForward::LHCalcVars_t
Definition: TForwardElectronLikelihoodTool.h:69
Root::TForwardElectronLikelihoodTool::m_cutPosition_kinematicEta
int m_cutPosition_kinematicEta
The position of the kinematic cuts bit in the AcceptInfo return object, separate for eta/Et.
Definition: TForwardElectronLikelihoodTool.h:226
Root::TForwardElectronLikelihoodTool::m_variableNames
std::string m_variableNames
variables to use in the LH
Definition: TForwardElectronLikelihoodTool.h:193
Root::TForwardElectronLikelihoodTool::getAcceptInfo
const asg::AcceptInfo & getAcceptInfo() const
accesss to the accept info object
Definition: TForwardElectronLikelihoodTool.h:99
Root::TForwardElectronLikelihoodTool::m_cutLikelihoodPileupCorrectionB
std::vector< double > m_cutLikelihoodPileupCorrectionB
pileup constant factor for cut on likelihood output
Definition: TForwardElectronLikelihoodTool.h:191
asg::AcceptData
Definition: AcceptData.h:30
Root::TForwardElectronLikelihoodTool::m_pdfFile
TFile * m_pdfFile
Pointer to the opened TFile that holds the PDFs.
Definition: TForwardElectronLikelihoodTool.h:222
Root::TForwardElectronLikelihoodTool::initialize
StatusCode initialize()
Initialize this class.
Definition: TForwardElectronLikelihoodTool.cxx:36
Root::TForwardElectronLikelihoodTool::getBitmask
unsigned int getBitmask(void) const
Definition: TForwardElectronLikelihoodTool.h:140