ATLAS Offline Software
KinematicSystHandler.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #ifndef MUONEFFICIENCYCORRECTION_SYSTHANDLER_H
6 #define MUONEFFICIENCYCORRECTION_SYSTHANDLER_H
7 
8 // EDM include(s):
9 #include "xAODMuon/Muon.h"
10 
15 
16 // further ROOT includes
17 #include <TFile.h>
18 #include <TDirectory.h>
19 #include <TH1.h>
20 #include <TF1.h>
21 
22 // STL includes
23 #include <string>
24 #include <iostream>
25 #include <memory>
26 #include <map>
27 #include <cmath>
28 
29 namespace CP {
30 
31  //Interface class to retrieve the Muon dependent systematics
33  public:
35  virtual CorrectionCode GetKineDependent(const xAOD::Muon &mu, float& Eff) const = 0;
38  virtual void SetSystematicWeight(float SystWeight) = 0;
39 
41  virtual bool initialize() = 0;
42  virtual ~IKinematicSystHandler() =default;
43 
46  KinVariable GetMuonVariableToUse(const std::string &name);
47 
48  float Eta(const xAOD::Muon &mu) const;
49  float Pt(const xAOD::Muon &mu) const;
50  float PtGeV(const xAOD::Muon &mu) const;
51  float AbsEta(const xAOD::Muon &mu) const;
52 
53  };
66  public:
67  CorrectionCode GetKineDependent(const xAOD::Muon& mu, float& eff) const override;
68 
69  void SetSystematicWeight(float syst_weight) override;
70 
71  bool initialize() override;
72 
74  PtKinematicSystHandler(std::unique_ptr<HistHandler> pt_flatnesss, std::unique_ptr<HistHandler> energy_loss);
75  private:
76  std::unique_ptr<HistHandler> m_flatness;
77  std::unique_ptr<HistHandler> m_loss;
78  float m_SystWeight;
79  };
83 
85  public:
86  CorrectionCode GetKineDependent(const xAOD::Muon &mu, float& Eff) const override;
87 
88  void SetSystematicWeight(float SystWeight) override;
89 
90  bool initialize() override;
91  PrimodialPtSystematic(std::unique_ptr<HistHandler> HistHandler);
92  private:
93  std::unique_ptr<HistHandler> m_Handler;
94  float m_SystWeight;
95  };
100  public:
101  TTVAClosureSysHandler(std::unique_ptr<HistHandler> HistHandler);
102 
103  void SetSystematicWeight( float SystWeight) override;
104  bool initialize() override;
105  CorrectionCode GetKineDependent(const xAOD::Muon&mu, float& Eff) const override;
106  private:
107  std::unique_ptr<HistHandler> m_Handler;
109  };
110 
112  public:
113  CorrectionCode GetKineDependent(const xAOD::Muon &mu, float& Eff) const override;
114  void SetSystematicWeight(float SystWeight)override;
115 
116  bool initialize() override;
117  BadMuonVetoSystHandler(TDirectory* InDir_3Stations, TDirectory* InDir_2Stations = nullptr);
118  virtual ~BadMuonVetoSystHandler();
119 
120  private:
121  typedef std::pair<float, float> Ranges;
122 
123  CP::CorrectionCode findAppropiatePolynomial(const xAOD::Muon& mu, TF1* &Poly) const;
124 
125  std::string getNextProperty(std::string &sstr) const;
126  void fillMap(TDirectory* InDir, std::map<Ranges, std::unique_ptr<TF1>>& systPolynomials);
127 
128  std::map<Ranges, std::unique_ptr<TF1>> m_syst3Stations;
129  std::map<Ranges, std::unique_ptr<TF1>> m_syst2Stations;
130 
134  };
135 
136 } /* namespace CP */
137 
138 #endif /* EFFICIENCYSCALEFACTOR_H_ */
CP::IKinematicSystHandler::GetMuonVariableToUse
KinVariable GetMuonVariableToUse(const std::string &name)
Definition: KinematicSystHandler.cxx:21
CP::BadMuonVetoSystHandler::fillMap
void fillMap(TDirectory *InDir, std::map< Ranges, std::unique_ptr< TF1 >> &systPolynomials)
Definition: KinematicSystHandler.cxx:137
CP::BadMuonVetoSystHandler::Ranges
std::pair< float, float > Ranges
Definition: KinematicSystHandler.h:121
CP::PrimodialPtSystematic::GetKineDependent
CorrectionCode GetKineDependent(const xAOD::Muon &mu, float &Eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:103
CP::PrimodialPtSystematic::PrimodialPtSystematic
PrimodialPtSystematic(std::unique_ptr< HistHandler > HistHandler)
Definition: KinematicSystHandler.cxx:98
Muon.h
CP::IKinematicSystHandler::KinVariable
float(IKinematicSystHandler::* KinVariable)(const xAOD::Muon &mu) const
Typedef to prepare function pointers to the muon.
Definition: KinematicSystHandler.h:45
CP::BadMuonVetoSystHandler::m_syst2Stations
std::map< Ranges, std::unique_ptr< TF1 > > m_syst2Stations
Definition: KinematicSystHandler.h:129
CP::BadMuonVetoSystHandler::getNextProperty
std::string getNextProperty(std::string &sstr) const
Definition: KinematicSystHandler.cxx:239
CP::BadMuonVetoSystHandler::~BadMuonVetoSystHandler
virtual ~BadMuonVetoSystHandler()
Definition: KinematicSystHandler.cxx:210
CP::TTVAClosureSysHandler::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:108
CP::TTVAClosureSysHandler
Extra systematic assigned for the TTVA non-closure.
Definition: KinematicSystHandler.h:99
MuonEfficiencyType.h
CP::IKinematicSystHandler::Pt
float Pt(const xAOD::Muon &mu) const
Definition: KinematicSystHandler.cxx:11
CP::PrimodialPtSystematic::initialize
bool initialize() override
Initialize method to load the inputs and check that everything will work as expected.
Definition: KinematicSystHandler.cxx:119
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
CP::PtKinematicSystHandler::SetSystematicWeight
void SetSystematicWeight(float syst_weight) override
Set's the absolute scaling of the systematic.
Definition: KinematicSystHandler.cxx:69
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
ISystematicsTool.h
CP::BadMuonVetoSystHandler::findAppropiatePolynomial
CP::CorrectionCode findAppropiatePolynomial(const xAOD::Muon &mu, TF1 *&Poly) const
Definition: KinematicSystHandler.cxx:213
CP::IKinematicSystHandler::GetKineDependent
virtual CorrectionCode GetKineDependent(const xAOD::Muon &mu, float &Eff) const =0
Add an additional uncertainty to the muon depending on its kinematics.
CP::PrimodialPtSystematic::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:94
CP::TTVAClosureSysHandler::GetKineDependent
CorrectionCode GetKineDependent(const xAOD::Muon &mu, float &Eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:86
CP::TTVAClosureSysHandler::m_Handler
std::unique_ptr< HistHandler > m_Handler
Definition: KinematicSystHandler.h:107
CP::HistHandler
Definition: HistHandler.h:37
CP::BadMuonVetoSystHandler::m_uncertVar
KinVariable m_uncertVar
Definition: KinematicSystHandler.h:131
CP::PtKinematicSystHandler::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:78
CP::IKinematicSystHandler::AbsEta
float AbsEta(const xAOD::Muon &mu) const
Definition: KinematicSystHandler.cxx:17
CP::BadMuonVetoSystHandler::BadMuonVetoSystHandler
BadMuonVetoSystHandler(TDirectory *InDir_3Stations, TDirectory *InDir_2Stations=nullptr)
Definition: KinematicSystHandler.cxx:125
CP::PrimodialPtSystematic::m_Handler
std::unique_ptr< HistHandler > m_Handler
Definition: KinematicSystHandler.h:93
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CP::IKinematicSystHandler::~IKinematicSystHandler
virtual ~IKinematicSystHandler()=default
CP::BadMuonVetoSystHandler::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:133
CP::PtKinematicSystHandler::initialize
bool initialize() override
Initialize method to load the inputs and check that everything will work as expected.
Definition: KinematicSystHandler.cxx:73
CP::BadMuonVetoSystHandler
Definition: KinematicSystHandler.h:111
CP::PtKinematicSystHandler::GetKineDependent
CorrectionCode GetKineDependent(const xAOD::Muon &mu, float &eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:40
HistHandler.h
CP::IKinematicSystHandler::PtGeV
float PtGeV(const xAOD::Muon &mu) const
Definition: KinematicSystHandler.cxx:14
CP::PtKinematicSystHandler::m_flatness
std::unique_ptr< HistHandler > m_flatness
Definition: KinematicSystHandler.h:76
CP::PtKinematicSystHandler::PtKinematicSystHandler
PtKinematicSystHandler(std::unique_ptr< HistHandler > pt_flatnesss, std::unique_ptr< HistHandler > energy_loss)
Constructor having two histhandler objects inside. The.
Definition: KinematicSystHandler.cxx:32
CP::BadMuonVetoSystHandler::GetKineDependent
CorrectionCode GetKineDependent(const xAOD::Muon &mu, float &Eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:174
CP::BadMuonVetoSystHandler::initialize
bool initialize() override
Initialize method to load the inputs and check that everything will work as expected.
Definition: KinematicSystHandler.cxx:200
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
CP::IKinematicSystHandler::Eta
float Eta(const xAOD::Muon &mu) const
Definition: KinematicSystHandler.cxx:8
CorrectionCode.h
dqt_zlumi_alleff_HIST.eff
int eff
Definition: dqt_zlumi_alleff_HIST.py:113
CP::BadMuonVetoSystHandler::m_polySelVar
KinVariable m_polySelVar
Definition: KinematicSystHandler.h:132
CP::IKinematicSystHandler
Definition: KinematicSystHandler.h:32
CP::PrimodialPtSystematic::SetSystematicWeight
void SetSystematicWeight(float SystWeight) override
Set's the absolute scaling of the systematic.
Definition: KinematicSystHandler.cxx:116
CP::IKinematicSystHandler::SetSystematicWeight
virtual void SetSystematicWeight(float SystWeight)=0
Set's the absolute scaling of the systematic.
CP::BadMuonVetoSystHandler::m_syst3Stations
std::map< Ranges, std::unique_ptr< TF1 > > m_syst3Stations
Definition: KinematicSystHandler.h:128
CP::TTVAClosureSysHandler::initialize
bool initialize() override
Initialize method to load the inputs and check that everything will work as expected.
Definition: KinematicSystHandler.cxx:85
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
CP::PrimodialPtSystematic
The PrimodialPtSystematic was the former PtKinematicSystHandler.
Definition: KinematicSystHandler.h:84
CP::IKinematicSystHandler::initialize
virtual bool initialize()=0
Initialize method to load the inputs and check that everything will work as expected.
readCCLHist.float
float
Definition: readCCLHist.py:83
CP::TTVAClosureSysHandler::TTVAClosureSysHandler
TTVAClosureSysHandler(std::unique_ptr< HistHandler > HistHandler)
Definition: KinematicSystHandler.cxx:79
CP::PtKinematicSystHandler
Z->mumu reconstruction scale-factors are delivered in eta-phi maps integrating out any pt-dependence.
Definition: KinematicSystHandler.h:65
CP::PtKinematicSystHandler::m_loss
std::unique_ptr< HistHandler > m_loss
Definition: KinematicSystHandler.h:77
CP::TTVAClosureSysHandler::SetSystematicWeight
void SetSystematicWeight(float SystWeight) override
Set's the absolute scaling of the systematic.
Definition: KinematicSystHandler.cxx:84
CP::BadMuonVetoSystHandler::SetSystematicWeight
void SetSystematicWeight(float SystWeight) override
Set's the absolute scaling of the systematic.
Definition: KinematicSystHandler.cxx:196