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 
19 #include <ColumnarMuon/MuonDef.h>
20 
21 // further ROOT includes
22 #include <TFile.h>
23 #include <TDirectory.h>
24 #include <TH1.h>
25 #include <TF1.h>
26 
27 // STL includes
28 #include <string>
29 #include <iostream>
30 #include <memory>
31 #include <map>
32 #include <cmath>
33 
34 namespace CP {
35 
36  //Interface class to retrieve the Muon dependent systematics
38  public:
40  virtual CorrectionCode GetKineDependent(columnar::MuonId mu, float& Eff) const = 0;
43  virtual void SetSystematicWeight(float SystWeight) = 0;
44 
46  virtual bool initialize() = 0;
47  virtual ~IKinematicSystHandler() =default;
48 
51  KinVariable GetMuonVariableToUse(const std::string &name);
52 
53  float Eta(columnar::MuonId mu) const;
54  float Pt(columnar::MuonId mu) const;
55  float PtGeV(columnar::MuonId mu) const;
56  float AbsEta(columnar::MuonId mu) const;
57 
61  };
74  public:
75  CorrectionCode GetKineDependent(columnar::MuonId mu, float& eff) const override;
76 
77  void SetSystematicWeight(float syst_weight) override;
78 
79  bool initialize() override;
80 
82  PtKinematicSystHandler(std::unique_ptr<HistHandler> pt_flatnesss, std::unique_ptr<HistHandler> energy_loss);
83  private:
84  std::unique_ptr<HistHandler> m_flatness;
85  std::unique_ptr<HistHandler> m_loss;
86  float m_SystWeight;
87  };
91 
93  public:
94  CorrectionCode GetKineDependent(columnar::MuonId mu, float& Eff) const override;
95 
96  void SetSystematicWeight(float SystWeight) override;
97 
98  bool initialize() override;
99  PrimodialPtSystematic(std::unique_ptr<HistHandler> HistHandler);
100  private:
101  std::unique_ptr<HistHandler> m_Handler;
103  };
108  public:
109  TTVAClosureSysHandler(std::unique_ptr<HistHandler> HistHandler);
110 
111  void SetSystematicWeight( float SystWeight) override;
112  bool initialize() override;
113  CorrectionCode GetKineDependent(columnar::MuonId mu, float& Eff) const override;
114  private:
115  std::unique_ptr<HistHandler> m_Handler;
117  };
118 
120  public:
121  CorrectionCode GetKineDependent(columnar::MuonId mu, float& Eff) const override;
122  void SetSystematicWeight(float SystWeight)override;
123 
124  bool initialize() override;
125  BadMuonVetoSystHandler(TDirectory* InDir_3Stations, TDirectory* InDir_2Stations = nullptr);
126  virtual ~BadMuonVetoSystHandler();
127 
128  private:
129  typedef std::pair<float, float> Ranges;
130 
131  CP::CorrectionCode findAppropiatePolynomial(const xAOD::Muon& mu, TF1* &Poly) const;
132 
133  std::string getNextProperty(std::string &sstr) const;
134  void fillMap(TDirectory* InDir, std::map<Ranges, std::unique_ptr<TF1>>& systPolynomials);
135 
136  std::map<Ranges, std::unique_ptr<TF1>> m_syst3Stations;
137  std::map<Ranges, std::unique_ptr<TF1>> m_syst2Stations;
138 
142  };
143 
144 } /* namespace CP */
145 
146 #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:129
CP::BadMuonVetoSystHandler::GetKineDependent
CorrectionCode GetKineDependent(columnar::MuonId mu, float &Eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:174
CP::PrimodialPtSystematic::PrimodialPtSystematic
PrimodialPtSystematic(std::unique_ptr< HistHandler > HistHandler)
Definition: KinematicSystHandler.cxx:98
Muon.h
CP::IKinematicSystHandler::AbsEta
float AbsEta(columnar::MuonId mu) const
Definition: KinematicSystHandler.cxx:17
CP::BadMuonVetoSystHandler::m_syst2Stations
std::map< Ranges, std::unique_ptr< TF1 > > m_syst2Stations
Definition: KinematicSystHandler.h:137
CP::BadMuonVetoSystHandler::getNextProperty
std::string getNextProperty(std::string &sstr) const
Definition: KinematicSystHandler.cxx:239
CP::BadMuonVetoSystHandler::~BadMuonVetoSystHandler
virtual ~BadMuonVetoSystHandler()
Definition: KinematicSystHandler.cxx:210
CP::IKinematicSystHandler::KinVariable
float(IKinematicSystHandler::* KinVariable)(columnar::MuonId mu) const
Typedef to prepare function pointers to the muon.
Definition: KinematicSystHandler.h:50
CP::TTVAClosureSysHandler::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:116
CP::TTVAClosureSysHandler
Extra systematic assigned for the TTVA non-closure.
Definition: KinematicSystHandler.h:107
MuonEfficiencyType.h
CP::IKinematicSystHandler::muonsHandle
columnar::MuonAccessor< columnar::ObjectColumn > muonsHandle
Definition: KinematicSystHandler.h:58
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:49
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::Eta
float Eta(columnar::MuonId mu) const
Definition: KinematicSystHandler.cxx:8
CP::PrimodialPtSystematic::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:102
CP::IKinematicSystHandler::Pt
float Pt(columnar::MuonId mu) const
Definition: KinematicSystHandler.cxx:11
CP::TTVAClosureSysHandler::m_Handler
std::unique_ptr< HistHandler > m_Handler
Definition: KinematicSystHandler.h:115
CP::IKinematicSystHandler::ptAcc
columnar::MuonAccessor< float > ptAcc
Definition: KinematicSystHandler.h:59
ColumnAccessor.h
CP::HistHandler
Definition: HistHandler.h:42
CP::IKinematicSystHandler::GetKineDependent
virtual CorrectionCode GetKineDependent(columnar::MuonId mu, float &Eff) const =0
Add an additional uncertainty to the muon depending on its kinematics.
CP::BadMuonVetoSystHandler::m_uncertVar
KinVariable m_uncertVar
Definition: KinematicSystHandler.h:139
CP::PtKinematicSystHandler::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:86
CP::TTVAClosureSysHandler::GetKineDependent
CorrectionCode GetKineDependent(columnar::MuonId mu, float &Eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:86
CP::PrimodialPtSystematic::GetKineDependent
CorrectionCode GetKineDependent(columnar::MuonId mu, float &Eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:103
ObjectColumn.h
ColumnarTool.h
CP::BadMuonVetoSystHandler::BadMuonVetoSystHandler
BadMuonVetoSystHandler(TDirectory *InDir_3Stations, TDirectory *InDir_2Stations=nullptr)
Definition: KinematicSystHandler.cxx:125
MuonDef.h
CP::IKinematicSystHandler::etaAcc
columnar::MuonAccessor< float > etaAcc
Definition: KinematicSystHandler.h:60
CP::PtKinematicSystHandler::GetKineDependent
CorrectionCode GetKineDependent(columnar::MuonId mu, float &eff) const override
Add an additional uncertainty to the muon depending on its kinematics.
Definition: KinematicSystHandler.cxx:40
CP::PrimodialPtSystematic::m_Handler
std::unique_ptr< HistHandler > m_Handler
Definition: KinematicSystHandler.h:101
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition: ContainerId.h:176
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
CP::IKinematicSystHandler::~IKinematicSystHandler
virtual ~IKinematicSystHandler()=default
CP::BadMuonVetoSystHandler::m_SystWeight
float m_SystWeight
Definition: KinematicSystHandler.h:141
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:119
HistHandler.h
CP::PtKinematicSystHandler::m_flatness
std::unique_ptr< HistHandler > m_flatness
Definition: KinematicSystHandler.h:84
CP::IKinematicSystHandler::PtGeV
float PtGeV(columnar::MuonId mu) const
Definition: KinematicSystHandler.cxx:14
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
columnar::ColumnarTool
the base class for all columnar components
Definition: ColumnAccessorDataArray.h:17
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
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:140
CP::IKinematicSystHandler
Definition: KinematicSystHandler.h:37
CP::PrimodialPtSystematic::SetSystematicWeight
void SetSystematicWeight(float SystWeight) override
Set's the absolute scaling of the systematic.
Definition: KinematicSystHandler.cxx:116
columnar::AccessorTemplate
the raw column accessor template class
Definition: ColumnAccessor.h:81
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:136
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:51
CP::PrimodialPtSystematic
The PrimodialPtSystematic was the former PtKinematicSystHandler.
Definition: KinematicSystHandler.h:92
CP::IKinematicSystHandler::initialize
virtual bool initialize()=0
Initialize method to load the inputs and check that everything will work as expected.
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:73
CP::PtKinematicSystHandler::m_loss
std::unique_ptr< HistHandler > m_loss
Definition: KinematicSystHandler.h:85
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
python.LArMinBiasAlgConfig.float
float
Definition: LArMinBiasAlgConfig.py:65