ATLAS Offline Software
Loading...
Searching...
No Matches
MuonTriggerScaleFactors.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4
5#ifndef MUONTRIGGERSCALEFACTORS_H_
6#define MUONTRIGGERSCALEFACTORS_H_
7
9#include "AsgTools/AsgTool.h"
10#include "AsgTools/ToolHandle.h"
15#include <stdexcept>
16#include <iostream>
17#include <string>
18#include <sstream>
19#include <memory>
20
21#include "TDirectory.h"
22
23#include <unordered_map>
24
25class TH1;
26
27namespace CP {
28 typedef std::shared_ptr<TH1> TH1_Ptr;
29
32
33 public:
34
35 MuonTriggerScaleFactors(const std::string& name);
36
38
39 virtual StatusCode initialize(void);
40
41 // for single lepton triggers
42 virtual CorrectionCode getTriggerScaleFactor(const xAOD::MuonContainer& mucont, Double_t& triggersf, const std::string& trigger) const;
43
44 virtual CorrectionCode getTriggerScaleFactor(const xAOD::Muon& muon, Double_t& triggersf, const std::string& trigger) const;
45
46 virtual CorrectionCode getTriggerEfficiency(const xAOD::Muon& mu, Double_t& efficiency, const std::string& trigger, Bool_t dataType) const;
47
48 virtual bool isAffectedBySystematic(const CP::SystematicVariation& systematic) const;
49
51
53
54 virtual StatusCode applySystematicVariation(const CP::SystematicSet& systConfig);
55
56 virtual int getBinNumber(const xAOD::Muon& muon, const std::string& trigger) const;
57
58 virtual int getReplica_index(const std::string& sysBaseName, const std::string& trigStr) const;
59
61 virtual bool isTriggerSupported(const std::string& trigger) const;
62 private:
63
64 virtual CorrectionCode getMuonEfficiency(Double_t& eff, const TrigMuonEff::Configuration& configuration, const xAOD::Muon& muon, const std::string& trigger, const std::string& systematic) const;
65
66 virtual CorrectionCode GetTriggerSF_dimu(Double_t& TriggerSF, TrigMuonEff::Configuration& configuration, const xAOD::MuonContainer& mucont, const std::string& trigger) const;
67
68 virtual CorrectionCode GetTriggerSF(Double_t& TriggerSF, TrigMuonEff::Configuration& configuration, const xAOD::MuonContainer& mucont, const std::string& trigger) const;
69
70 virtual CorrectionCode GetTriggerSF(Double_t& TriggerSF, TrigMuonEff::Configuration& configuration, const xAOD::Muon& muon, const std::string& trigger) const;
71
72 virtual CorrectionCode getDimuonEfficiency(Double_t& eff, const TrigMuonEff::Configuration& configuration, const xAOD::MuonContainer& mucont, const std::string& chain, const std::string& systematic) const;
73
77
78 StatusCode registerSystematics();
79
80 StatusCode LoadTriggerMap(unsigned int year);
81
82 //This function is needed during initialization to parse the histograms to the cache
83 unsigned int encodeHistoName(const std::string &period, const std::string& Trigger, bool isData, const std::string& Systematic, bool isBarrel = true) const;
84 //This function is the equivalent during run time to retrieve the histograms from the cache
85 unsigned int encodeHistoName(const std::string& Trigger, const TrigMuonEff::Configuration& configuration, const std::string& Systematic, bool isBarrel = true) const;
86 protected:
87 virtual std::shared_ptr<TH1> getEfficiencyHistogram(unsigned int year, const std::string& period, const std::string& trigger, bool isData, const std::string& Systematic, bool isBarrel = true) const;
88 virtual std::shared_ptr<TH1> getEfficiencyHistogram(const std::string& trigger, bool isData, const std::string& Systematic, bool isBarrel = true) const;
89 private:
90 typedef std::pair<unsigned int, std::string> YearPeriod;
91 typedef std::pair<YearPeriod, unsigned int> EffiHistoIdent;
92 typedef std::map<EffiHistoIdent, TH1_Ptr> EfficiencyMap;
93
94 CorrectionCode getThreshold(Int_t& threshold, const std::string& trigger) const;
95
96 std::string getTriggerCorrespondingToDimuonTrigger(const std::string& trigger) const;
97 protected:
98
99 std::string getDataPeriod() const;
100 unsigned int getRunNumber() const;
101 unsigned int getYear(unsigned int run) const;
102 std::string getDataPeriod(unsigned int run) const;
103 std::string getDataPeriod(unsigned int runNumber, unsigned int year) const;
104 private:
105 SG::ReadHandleKey<xAOD::EventInfo> m_eventInfo{this, "EventInfoContName", "EventInfo", "event info key"};
106
107 TDirectory* getTemporaryDirectory(void) const;
108
109 //Generate replicas of h for Toys with each bin of h varied with Gaussian distribution
110 //with mean from bin content and sigma from bin error
111 std::vector<TH1_Ptr> generateReplicas(TH1_Ptr h, int nrep, int seed) const;
112
113 std::unordered_map<CP::SystematicSet, CP::SystematicSet> m_systFilter;
114
116 std::string m_fileName;
118 std::map<EffiHistoIdent, std::vector<TH1_Ptr> > m_efficiencyMapReplicaArray;
119
120 std::string m_muonquality;
121
122 // subfolder to load from the calibration db
124 std::string m_custom_dir;
125 std::string m_binning;
129 std::string m_forcePeriod;
130 //Variables for toy replicas setup
131 std::vector<std::string> m_replicaTriggerList;
132 std::set<std::string> m_replicaSet; //set of triggers for replicas, for fast searching
135
137 static const std::map<unsigned int,int> m_runNumber_year;
138
139 };
140
141}
142
143#endif
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Property holding a SG store/key/clid from which a ReadHandle is made.
Header file for AthHistogramAlgorithm.
Return value from object correction CP tools.
unsigned int getYear(unsigned int run) const
std::vector< std::string > m_replicaTriggerList
static const std::map< unsigned int, int > m_runNumber_year
virtual CorrectionCode GetTriggerSF_dimu(Double_t &TriggerSF, TrigMuonEff::Configuration &configuration, const xAOD::MuonContainer &mucont, const std::string &trigger) const
StatusCode LoadTriggerMap(unsigned int year)
std::set< std::string > m_replicaSet
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
std::map< EffiHistoIdent, std::vector< TH1_Ptr > > m_efficiencyMapReplicaArray
TDirectory * getTemporaryDirectory(void) const
virtual CorrectionCode getMuonEfficiency(Double_t &eff, const TrigMuonEff::Configuration &configuration, const xAOD::Muon &muon, const std::string &trigger, const std::string &systematic) const
virtual std::shared_ptr< TH1 > getEfficiencyHistogram(unsigned int year, const std::string &period, const std::string &trigger, bool isData, const std::string &Systematic, bool isBarrel=true) const
std::map< EffiHistoIdent, TH1_Ptr > EfficiencyMap
virtual int getReplica_index(const std::string &sysBaseName, const std::string &trigStr) const
std::pair< YearPeriod, unsigned int > EffiHistoIdent
std::string getDataPeriod(unsigned int runNumber, unsigned int year) const
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig)
effects: configure this tool for the given list of systematic variations.
MuonTriggerScaleFactors(const std::string &name)
std::vector< TH1_Ptr > generateReplicas(TH1_Ptr h, int nrep, int seed) const
virtual CorrectionCode getDimuonEfficiency(Double_t &eff, const TrigMuonEff::Configuration &configuration, const xAOD::MuonContainer &mucont, const std::string &chain, const std::string &systematic) const
unsigned int encodeHistoName(const std::string &period, const std::string &Trigger, bool isData, const std::string &Systematic, bool isBarrel=true) const
virtual CorrectionCode GetTriggerSF(Double_t &TriggerSF, TrigMuonEff::Configuration &configuration, const xAOD::MuonContainer &mucont, const std::string &trigger) const
virtual int getBinNumber(const xAOD::Muon &muon, const std::string &trigger) const
std::string getTriggerCorrespondingToDimuonTrigger(const std::string &trigger) const
CorrectionCode getThreshold(Int_t &threshold, const std::string &trigger) const
std::unordered_map< CP::SystematicSet, CP::SystematicSet > m_systFilter
const CP::SystematicSet & appliedSystematics() const
virtual bool isAffectedBySystematic(const CP::SystematicVariation &systematic) const
Declare the interface that this class provides.
virtual CorrectionCode getTriggerScaleFactor(const xAOD::MuonContainer &mucont, Double_t &triggersf, const std::string &trigger) const
virtual CP::SystematicSet affectingSystematics() const
returns: the list of all systematics this tool can be affected by
virtual CP::SystematicSet recommendedSystematics() const
returns: the list of all systematics this tool recommends to use
virtual bool isTriggerSupported(const std::string &trigger) const
Returns whether the trigger is supported by the tool or not. The decision depends on the present (ran...
virtual CorrectionCode getTriggerEfficiency(const xAOD::Muon &mu, Double_t &efficiency, const std::string &trigger, Bool_t dataType) const
std::pair< unsigned int, std::string > YearPeriod
Class to wrap a set of SystematicVariations.
Property holding a SG store/key/clid from which a ReadHandle is made.
Base class for the dual-use tool implementation classes.
Definition AsgTool.h:47
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
Select isolated Photons, Electrons and Muons.
std::shared_ptr< TH1 > TH1_Ptr
Definition run.py:1
Muon_v1 Muon
Reference the current persistent version:
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
structure to hold variables to configure behaviour of the tool