ATLAS Offline Software
METSignificance.h
Go to the documentation of this file.
1 /*
3  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
4 */
5 // METSignificance.h
6 // Header file for class METSignificance
7 // Author: P. Francavilla<francav@cern.ch>
8 // Author: D. Schaefer <schae@cern.ch>
10 #ifndef METUTILITIES_MET_METSIGNIFICANCE_H
11 #define METUTILITIES_MET_METSIGNIFICANCE_H 1
12 
13 // STL includes
14 #include <string>
15 #include <tuple>
16 
17 // ROOT includes
18 #include "TH2F.h"
19 #include "TFile.h"
20 
21 // FrameWork includes
22 #include "AsgTools/ToolHandle.h"
23 #include "AsgTools/AsgTool.h"
24 
25 // METInterface includes
27 
28 // EDM includes
29 #include "xAODJet/JetContainer.h"
30 
31 // Tool interfaces
37 
38 namespace met {
39 
40  // typedefs
42 
44  : public asg::AsgTool,
45  virtual public IMETSignificance
46 
47  {
48  // This macro defines the constructor with the interface declaration
50 
51  public:
52 
53  // Copy constructor:
54 
56  METSignificance(const std::string& name);
57 
59  virtual ~METSignificance();
60 
61  // Athena algtool's Hooks
64 
65  StatusCode varianceMET(xAOD::MissingETContainer* metCont, float avgmu, const std::string& jetTermName, const std::string& softTermName, const std::string& totalMETName);
66 
67  // Rotates the phi direction of the object resolutions & recomputes the MET significance
68  StatusCode RotateToPhi(float phi);
69 
70  // Subtracts the vector lambda from the MET & recomputes the MET signficance in new MET - lambda direction
71  StatusCode SetLambda(const float px, const float py, const bool GeV=true);
72 
73  double GetMETOverSqrtSumET() const { if(m_sumet>0.0) return (m_met/std::sqrt(m_sumet)); return -1.0; }
74  double GetMETOverSqrtHT () const { if(m_ht>0.0) return (m_met/std::sqrt(m_ht)); return -1.0; }
75  double GetSignificance() const { if(m_significance>0.0) return std::sqrt(m_significance); return -1.0; }
76  double GetSigDirectional() const { if(m_VarL>0.0) return m_met/std::sqrt(m_VarL); return -1.0; }
77  double GetRho() const { return m_rho; }
78  double GetVarL() const { return m_VarL; }
79  double GetVarT() const { return m_VarT; }
80  double GetTermVarL(const int term) const { if(m_term_VarL.find(term)!=m_term_VarL.end()) return m_term_VarL.find(term)->second; return -1.0e3; }
81  double GetTermVarT(const int term) const { if(m_term_VarT.find(term)!=m_term_VarT.end()) return m_term_VarT.find(term)->second; return -1.0e3; }
82 
83  private:
84 
87 
88  ToolHandle<IJetCalibrationTool> m_jetCalibTool {this, "jetCalibTool", "", "the IJetCalibrationTool we use"};
89  ToolHandle<CP::IMuonCalibrationAndSmearingTool> m_muonCalibrationAndSmearingTool {this, "MuonCalibTool", "", "the IMuonCalibrationAndSmearingTool we use"};
90  ToolHandle<CP::IEgammaCalibrationAndSmearingTool> m_egammaCalibTool {this, "egammaCalibTool", "", "the IEgammaCalibrationAndSmearingTool we use"};
91  ToolHandle<ITauToolBase> m_tauCombinedTES {this, "tauCombinedTES", "", "the TauCombinedTES tool we use"};
92 
93  StatusCode AddMuon (const xAOD::IParticle* obj, float &pt_reso, float &phi_reso, float avgmu);
94  StatusCode AddElectron(const xAOD::IParticle* obj, float &pt_reso, float &phi_reso, float avgmu);
95  StatusCode AddPhoton (const xAOD::IParticle* obj, float &pt_reso, float &phi_reso);
96  StatusCode AddJet (const xAOD::IParticle* obj, float &pt_reso, float &phi_reso, float &avgmu);
97  void AddTau (const xAOD::IParticle* obj, float &pt_reso, float &phi_reso);
98  void AddSoftTerm(const xAOD::MissingET* soft, const TVector3 &met_vect, double (&particle_sum)[2][2]);
99 
100  double GetPUProb(double jet_eta, double jet_phi,double jet_pt, double jet_jvt, double jet_fjvt, float avgmu);
101  double GetPhiUnc(double jet_eta, double jet_phi,double jet_pt);
102  static unsigned int getEtaBin(double jet_eta);
103 
104  std::tuple<double,double,double> CovMatrixRotation(double var_x, double var_y, double cv_xy, double Phi);
105 
106  double Significance_LT(double Numerator, double var_parall, double var_perpen, double cov);
107 
108  void InvertMatrix(double (&mat)[2][2], double (&m)[2][2]);
109  void AddMatrix(double (&X)[2][2],double (&Y)[2][2], double (&mat_new)[2][2]);
110  void RotateXY(const double (&mat)[2][2], double (&mat_new)[2][2], double phi);
111 
112  // soft term bias
113  double BiasPtSoftdir(const double PtSoft);
114  double VarparPtSoftdir(const double PtSoft, const double SoftSumet);
115 
116  // pthard - parameterization
117  double Bias_PtSoftParall(const double PtSoft_Parall);
118  double Var_Ptsoft(const double PtSoft);
119 
120  // Fill Reso map
121  void AddResoMap(const double varL, const double varT, const double CvTV, const int term);
122 
123  double m_GeV;
124 
125  TVector3 m_met_vect;
126  TVector3 m_soft_vect;
127  TVector3 m_pthard_vect;
128  TVector3 m_lamda_vect;
129 
136 
139  bool m_isAFII;
140 
141  // set limits
142  float m_jetPtThr;
143  float m_jetEtaThr;
144 
145  double m_scalarBias;
147  double m_rho;
148  double m_VarL;
149  double m_VarT;
150  double m_CvLT;
151 
152  double m_met_VarL;
153  double m_met_VarT;
154  double m_met_CvLT;
155 
156  std::map<int, double> m_term_VarL;
157  std::map<int, double> m_term_VarT;
158  std::map<int, double> m_term_CvLT;
159 
160  double m_met;
161  double m_metx;
162  double m_mety;
163  double m_metphi;
164  double m_metsoft;
165  double m_metsoftphi;
166  double m_ht;
167  double m_sumet;
168 
169  // Jet Uncertainties
170  TFile *m_file;
174 
175  std::string m_configPrefix;
177  std::string m_JetResoAux;
178  std::string m_EMuResoAux;
179  std::string m_JetCollection;
180 
181  };
182 
183 } //> end namespace met
184 #endif //> !METUTILITIES_MET_METSIGNIFICANCE_H
met::METSignificance::m_jerForEMu
bool m_jerForEMu
Definition: METSignificance.h:135
met::METSignificance::m_pthard_vect
TVector3 m_pthard_vect
Definition: METSignificance.h:127
met::METSignificance::VarparPtSoftdir
double VarparPtSoftdir(const double PtSoft, const double SoftSumet)
Definition: METSignificance.cxx:1017
met::METSignificance::InvertMatrix
void InvertMatrix(double(&mat)[2][2], double(&m)[2][2])
Definition: METSignificance.cxx:964
met::METSignificance::m_jetEtaThr
float m_jetEtaThr
Definition: METSignificance.h:143
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
met::METSignificance::m_lamda_vect
TVector3 m_lamda_vect
Definition: METSignificance.h:128
met::METSignificance::m_VarL
double m_VarL
Definition: METSignificance.h:148
met::METSignificance::AddResoMap
void AddResoMap(const double varL, const double varT, const double CvTV, const int term)
Definition: METSignificance.cxx:1044
met::METSignificance::Bias_PtSoftParall
double Bias_PtSoftParall(const double PtSoft_Parall)
Definition: METSignificance.cxx:1035
met::METSignificance::m_met
double m_met
Definition: METSignificance.h:160
met::METSignificance::RotateXY
void RotateXY(const double(&mat)[2][2], double(&mat_new)[2][2], double phi)
Definition: METSignificance.cxx:989
test_pyathena.px
px
Definition: test_pyathena.py:18
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
met::METSignificance::initialize
StatusCode initialize()
Dummy implementation of the initialisation function.
Definition: METSignificance.cxx:103
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
met::obj_link_t
ElementLink< xAOD::IParticleContainer > obj_link_t
Definition: METMaker.h:38
TH2F
Definition: rootspy.cxx:420
met::METSignificance::m_configJetPhiResoFile
std::string m_configJetPhiResoFile
Definition: METSignificance.h:176
met::METSignificance::m_configPrefix
std::string m_configPrefix
Definition: METSignificance.h:175
mat
GeoMaterial * mat
Definition: LArDetectorConstructionTBEC.cxx:53
met::METSignificance::m_GeV
double m_GeV
Definition: METSignificance.h:123
met::METSignificance::varianceMET
StatusCode varianceMET(xAOD::MissingETContainer *metCont, float avgmu, const std::string &jetTermName, const std::string &softTermName, const std::string &totalMETName)
Definition: METSignificance.cxx:195
met::METSignificance::m_JetResoAux
std::string m_JetResoAux
Definition: METSignificance.h:177
met::METSignificance
Definition: METSignificance.h:47
met::METSignificance::m_jetCalibTool
ToolHandle< IJetCalibrationTool > m_jetCalibTool
Definition: METSignificance.h:88
plotBeamSpotVxVal.cov
cov
Definition: plotBeamSpotVxVal.py:201
met::METSignificance::m_metphi
double m_metphi
Definition: METSignificance.h:163
met::METSignificance::SetLambda
StatusCode SetLambda(const float px, const float py, const bool GeV=true)
Definition: METSignificance.cxx:393
met::METSignificance::m_treatPUJets
bool m_treatPUJets
Definition: METSignificance.h:132
met::METSignificance::m_term_CvLT
std::map< int, double > m_term_CvLT
Definition: METSignificance.h:158
met::METSignificance::AddMuon
StatusCode AddMuon(const xAOD::IParticle *obj, float &pt_reso, float &phi_reso, float avgmu)
Definition: METSignificance.cxx:418
met::METSignificance::m_muonCalibrationAndSmearingTool
ToolHandle< CP::IMuonCalibrationAndSmearingTool > m_muonCalibrationAndSmearingTool
Definition: METSignificance.h:89
met::METSignificance::m_significance
double m_significance
Definition: METSignificance.h:146
met::METSignificance::GetPUProb
double GetPUProb(double jet_eta, double jet_phi, double jet_pt, double jet_jvt, double jet_fjvt, float avgmu)
Definition: METSignificance.cxx:684
IMETSignificance.h
met::METSignificance::m_mety
double m_mety
Definition: METSignificance.h:162
met::METSignificance::GetVarT
double GetVarT() const
Definition: METSignificance.h:79
met::METSignificance::m_CvLT
double m_CvLT
Definition: METSignificance.h:150
met::METSignificance::m_ht
double m_ht
Definition: METSignificance.h:166
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
met::METSignificance::GetTermVarL
double GetTermVarL(const int term) const
Definition: METSignificance.h:80
met::METSignificance::m_met_VarT
double m_met_VarT
Definition: METSignificance.h:153
IJetCalibrationTool.h
met::METSignificance::m_metsoft
double m_metsoft
Definition: METSignificance.h:164
Monitored::X
@ X
Definition: HistogramFillerUtils.h:24
met::METSignificance::m_softTermParam
int m_softTermParam
Definition: METSignificance.h:130
met::METSignificance::AddPhoton
StatusCode AddPhoton(const xAOD::IParticle *obj, float &pt_reso, float &phi_reso)
Definition: METSignificance.cxx:501
met::METSignificance::CovMatrixRotation
std::tuple< double, double, double > CovMatrixRotation(double var_x, double var_y, double cv_xy, double Phi)
Definition: METSignificance.cxx:939
met::METSignificance::m_met_vect
TVector3 m_met_vect
Definition: METSignificance.h:125
met::METSignificance::~METSignificance
virtual ~METSignificance()
Destructor:
IEgammaCalibrationAndSmearingTool.h
met::METSignificance::GetPhiUnc
double GetPhiUnc(double jet_eta, double jet_phi, double jet_pt)
Definition: METSignificance.cxx:899
met
Definition: IMETSignificance.h:24
met::METSignificance::m_rho
double m_rho
Definition: METSignificance.h:147
met::METSignificance::GetVarL
double GetVarL() const
Definition: METSignificance.h:78
met::METSignificance::m_metsoftphi
double m_metsoftphi
Definition: METSignificance.h:165
met::METSignificance::m_tauCombinedTES
ToolHandle< ITauToolBase > m_tauCombinedTES
Definition: METSignificance.h:91
met::METSignificance::Significance_LT
double Significance_LT(double Numerator, double var_parall, double var_perpen, double cov)
Definition: METSignificance.cxx:947
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
IMETSignificance
Definition: IMETSignificance.h:42
met::METSignificance::m_phi_reso_pt20
TH2F * m_phi_reso_pt20
Definition: METSignificance.h:171
met::METSignificance::BiasPtSoftdir
double BiasPtSoftdir(const double PtSoft)
Parameterization with PtSoft Direction //.
Definition: METSignificance.cxx:1010
met::METSignificance::METSignificance
METSignificance()
Default constructor:
met::METSignificance::m_EMuResoAux
std::string m_EMuResoAux
Definition: METSignificance.h:178
xAOD::MissingET_v1
Principal data object for Missing ET.
Definition: MissingET_v1.h:25
met::METSignificance::m_applyBias
bool m_applyBias
Definition: METSignificance.h:134
IInDetTrackSelectionTool.h
met::METSignificance::GetSigDirectional
double GetSigDirectional() const
Definition: METSignificance.h:76
met::METSignificance::m_phi_reso_pt100
TH2F * m_phi_reso_pt100
Definition: METSignificance.h:173
met::METSignificance::GetTermVarT
double GetTermVarT(const int term) const
Definition: METSignificance.h:81
Monitored::Y
@ Y
Definition: HistogramFillerUtils.h:24
xAOD::MissingETContainer_v1
Container for xAOD::MissingET_v1 objects.
Definition: MissingETContainer_v1.h:21
Amg::py
@ py
Definition: GeoPrimitives.h:39
met::METSignificance::AddTau
void AddTau(const xAOD::IParticle *obj, float &pt_reso, float &phi_reso)
Definition: METSignificance.cxx:568
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
met::METSignificance::AddJet
StatusCode AddJet(const xAOD::IParticle *obj, float &pt_reso, float &phi_reso, float &avgmu)
Definition: METSignificance.cxx:517
met::METSignificance::m_metx
double m_metx
Definition: METSignificance.h:161
IMuonCalibrationAndSmearingTool.h
met::METSignificance::AddSoftTerm
void AddSoftTerm(const xAOD::MissingET *soft, const TVector3 &met_vect, double(&particle_sum)[2][2])
Definition: METSignificance.cxx:589
met::METSignificance::m_soft_vect
TVector3 m_soft_vect
Definition: METSignificance.h:126
ITauToolBase.h
met::METSignificance::Var_Ptsoft
double Var_Ptsoft(const double PtSoft)
Definition: METSignificance.cxx:1029
met::METSignificance::GetRho
double GetRho() const
Definition: METSignificance.h:77
met::METSignificance::m_met_CvLT
double m_met_CvLT
Definition: METSignificance.h:154
JetContainer.h
met::METSignificance::m_scalarBias
double m_scalarBias
Definition: METSignificance.h:145
met::METSignificance::m_phi_reso_pt50
TH2F * m_phi_reso_pt50
Definition: METSignificance.h:172
met::METSignificance::m_isDataMuon
bool m_isDataMuon
Definition: METSignificance.h:138
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
met::METSignificance::AddMatrix
void AddMatrix(double(&X)[2][2], double(&Y)[2][2], double(&mat_new)[2][2])
Definition: METSignificance.cxx:982
met::METSignificance::finalize
StatusCode finalize()
Definition: METSignificance.cxx:184
met::METSignificance::m_egammaCalibTool
ToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Definition: METSignificance.h:90
met::METSignificance::m_isAFII
bool m_isAFII
Definition: METSignificance.h:139
met::METSignificance::m_met_VarL
double m_met_VarL
Definition: METSignificance.h:152
met::METSignificance::m_term_VarL
std::map< int, double > m_term_VarL
Definition: METSignificance.h:156
met::METSignificance::m_doPhiReso
bool m_doPhiReso
Definition: METSignificance.h:133
met::METSignificance::m_jetPtThr
float m_jetPtThr
Definition: METSignificance.h:142
met::METSignificance::m_sumet
double m_sumet
Definition: METSignificance.h:167
met::METSignificance::GetSignificance
double GetSignificance() const
Definition: METSignificance.h:75
Trk::jet_phi
@ jet_phi
Definition: JetVtxParamDefs.h:28
met::METSignificance::m_JetCollection
std::string m_JetCollection
Definition: METSignificance.h:179
met::METSignificance::GetMETOverSqrtHT
double GetMETOverSqrtHT() const
Definition: METSignificance.h:74
ToolHandle.h
met::METSignificance::m_softTermReso
double m_softTermReso
Definition: METSignificance.h:131
met::METSignificance::RotateToPhi
StatusCode RotateToPhi(float phi)
Definition: METSignificance.cxx:375
AsgTool.h
met::METSignificance::AddElectron
StatusCode AddElectron(const xAOD::IParticle *obj, float &pt_reso, float &phi_reso, float avgmu)
Definition: METSignificance.cxx:470
met::METSignificance::getEtaBin
static unsigned int getEtaBin(double jet_eta)
Definition: METSignificance.cxx:918
met::METSignificance::m_term_VarT
std::map< int, double > m_term_VarT
Definition: METSignificance.h:157
python.PyAthena.obj
obj
Definition: PyAthena.py:135
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
met::METSignificance::m_file
TFile * m_file
Definition: METSignificance.h:170
met::METSignificance::GetMETOverSqrtSumET
double GetMETOverSqrtSumET() const
Definition: METSignificance.h:73
met::METSignificance::m_VarT
double m_VarT
Definition: METSignificance.h:149
met::METSignificance::m_isDataJet
bool m_isDataJet
Definition: METSignificance.h:137