ATLAS Offline Software
EffiCollection.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3  */
4 #ifndef EFFICOLLECTION_H_
5 #define EFFICOLLECTION_H_
6 
7 // @class EffiCollection
10 
11 
14 #include <xAODMuon/Muon.h>
15 #include <map>
16 #include <string>
17 #include <iostream>
18 
19 namespace CP {
20  class MuonEfficiencyScaleFactors;
22  class SystematicSet;
23  class SystematicVariation;
24  class CollectionContainer;
29  class EffiCollection final {
30  public:
31  explicit EffiCollection(const MuonEfficiencyScaleFactors& ref_tool);
33  EffiCollection(const EffiCollection* Nominal, const MuonEfficiencyScaleFactors& ref_tool, const std::string& syst, int syst_bit_map, bool is_up);
34 
36  EfficiencyScaleFactor* retrieveSF(const xAOD::Muon & mu, unsigned int RunNumber) const;
39  Central = 1,
40  Calo = 1<<1,
41  Forward = 1<<2,
42  CentralLowPt = 1<<3,
43  CaloLowPt = 1<<4,
44 
49 
50 
51  };
52  enum Systematic{
53  Symmetric = 1<<6,
54  PtDependent = 1<<7,
55  UnCorrelated = 1<<8,
56  UpVariation = 1<<9,
57  };
58  static std::string FileTypeName(EffiCollection::CollectionType T);
59 
60 
63  bool CheckConsistency();
64 
67  unsigned int nBins() const;
68 
73  bool SetSystematicBin(unsigned int Bin);
74 
76  bool IsLowPtBin(unsigned int Bin) const;
78  bool IsForwardBin(unsigned int Bin) const;
79 
82  std::string GetBinName(unsigned int bin) const;
83 
86  int getUnCorrelatedSystBin(const xAOD::Muon& mu) const;
87 
88 
90  SystematicSet* getSystSet() const;
92  bool isAffectedBySystematic(const SystematicVariation& variation) const;
93  bool isAffectedBySystematic(const SystematicSet& set) const;
94 
95 
99  std::shared_ptr<CollectionContainer> retrieveContainer(CollectionType Type) const;
100 
101  private:
102  CollectionContainer* FindContainer(unsigned int bin) const;
105 
107 
111  std::shared_ptr<CollectionContainer> m_central_eff;
112  std::shared_ptr<CollectionContainer> m_calo_eff;
113  std::shared_ptr<CollectionContainer> m_forward_eff;
114  std::shared_ptr<CollectionContainer> m_lowpt_central_eff;
115  std::shared_ptr<CollectionContainer> m_lowpt_calo_eff;
116  std::shared_ptr<CollectionContainer> m_lrt_central_eff;
117  std::shared_ptr<CollectionContainer> m_lrt_lowpt_central_eff;
118 
121  std::unique_ptr<SystematicSet> m_syst_set;
122  };
123 
126  class CollectionContainer final {
127  public:
130  CollectionContainer(const MuonEfficiencyScaleFactors& ref_tool, CollectionContainer* Nominal, const std::string& syst_name, unsigned int syst_bit_map);
131 
133  EfficiencyScaleFactor* retrieve(unsigned int RunNumer);
134 
136  bool isBinInMap (unsigned int bin) const;
138  bool CheckConsistency();
139 
141  std::string sysname() const;
142 
144  bool SetSystematicBin(unsigned int Bin);
145 
148  void SetGlobalOffSet(unsigned int OffSet);
149 
151  unsigned int nBins() const;
153  unsigned int nOverFlowBins() const;
155  bool isOverFlowBin(int b) const;
156 
157 
159  unsigned int globalOffSet() const;
160 
162  std::string GetBinName(unsigned int Bin) const;
163 
166  int FindBinSF(const xAOD::Muon &mu) const;
167 
170 
171  bool isNominal() const;
172  bool isUpVariation() const;
173  bool separateBinSyst() const;
174 
175  private:
176  std::map<std::string, std::pair<unsigned int, unsigned int>> findPeriods(const MuonEfficiencyScaleFactors& ref_tool) const;
177  std::string fileName(const MuonEfficiencyScaleFactors& ref_tool) const;
178 
179  bool LoadPeriod(unsigned int RunNumber);
180 
181  std::vector<std::shared_ptr<EfficiencyScaleFactor>> m_SF;
183 
187  unsigned int m_binOffSet;
188 
189  };
190 
191 }
192 #endif /* EFFICOLLECTION_H_ */
CP::EffiCollection::Systematic
Systematic
Definition: EffiCollection.h:52
CP::EffiCollection
The EffiCollection class handles the 5 different scale-factor maps binned in time.
Definition: EffiCollection.h:29
CP::EffiCollection::CentralLowPt
@ CentralLowPt
Definition: EffiCollection.h:42
CP::EffiCollection::IsForwardBin
bool IsForwardBin(unsigned int Bin) const
Checks whether the i-th bin belongs to the forward map.
Definition: EffiCollection.cxx:287
Calo
Definition: CaloTrackingGeometryBuilder.h:15
CP::CollectionContainer::LoadPeriod
bool LoadPeriod(unsigned int RunNumber)
Definition: EffiCollection.cxx:426
CP::EffiCollection::getSystSet
SystematicSet * getSystSet() const
Returns the systematic set affecting this collection.
Definition: EffiCollection.cxx:321
Muon.h
CP::EffiCollection::IsLowPtBin
bool IsLowPtBin(unsigned int Bin) const
Checks whether the i-th bin belongs to the low-pt map...
Definition: EffiCollection.cxx:283
CP::EffiCollection::UnCorrelated
@ UnCorrelated
Definition: EffiCollection.h:55
CP::EffiCollection::m_lowpt_central_eff
std::shared_ptr< CollectionContainer > m_lowpt_central_eff
Definition: EffiCollection.h:114
CP::EffiCollection::Central
@ Central
The five different scale-factor maps.
Definition: EffiCollection.h:39
CP::CollectionContainer::separateBinSyst
bool separateBinSyst() const
Definition: EffiCollection.cxx:489
CP::MuonEfficiencyScaleFactors
Definition: MuonEfficiencyScaleFactors.h:23
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
bin
Definition: BinsDiffFromStripMedian.h:43
CP::CollectionContainer::isBinInMap
bool isBinInMap(unsigned int bin) const
Checks if the global bin number belongs to this map.
Definition: EffiCollection.cxx:461
CP::CollectionContainer::isNominal
bool isNominal() const
Definition: EffiCollection.cxx:481
MuonEfficiencyType.h
CP::CollectionContainer::globalOffSet
unsigned int globalOffSet() const
Global offset of the bin numbers.
Definition: EffiCollection.cxx:478
CP::EffiCollection::EffiCollection
EffiCollection(const MuonEfficiencyScaleFactors &ref_tool)
Definition: EffiCollection.cxx:17
CP::CollectionContainer::isOverFlowBin
bool isOverFlowBin(int b) const
Check whether the bin is overflow or not.
Definition: EffiCollection.cxx:458
CP::CollectionContainer::retrieve
EfficiencyScaleFactor * retrieve(unsigned int RunNumer)
Retrieve the scale-factor map belonging to that particular run of data-taking.
Definition: EffiCollection.cxx:438
CP::SystematicVariation
Definition: SystematicVariation.h:47
CP::CollectionContainer
The collection container manages the time binning of a particular scale-factor map.
Definition: EffiCollection.h:126
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
CP::EffiCollection::m_lrt_central_eff
std::shared_ptr< CollectionContainer > m_lrt_central_eff
Definition: EffiCollection.h:116
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
CP::EffiCollection::Forward
@ Forward
Definition: EffiCollection.h:41
CP::EffiCollection::m_lowpt_calo_eff
std::shared_ptr< CollectionContainer > m_lowpt_calo_eff
Definition: EffiCollection.h:115
CP::EffiCollection::nBins
unsigned int nBins() const
Get the number of all bins in the scale-factor maps including the overflow & underflow bins.
Definition: EffiCollection.cxx:251
CP::EffiCollection::CollectionType
CollectionType
Definition: EffiCollection.h:37
CP::EffiCollection::retrieveContainer
std::shared_ptr< CollectionContainer > retrieveContainer(CollectionType Type) const
Method to retrieve a container from the class ordered by a collection type This method is mainly used...
Definition: EffiCollection.cxx:104
CP::EffiCollection::UpVariation
@ UpVariation
Definition: EffiCollection.h:56
CP::CollectionContainer::GetBinName
std::string GetBinName(unsigned int Bin) const
Name of the i-th bin.
Definition: EffiCollection.cxx:467
CP::CollectionContainer::SetSystematicBin
bool SetSystematicBin(unsigned int Bin)
Activate this bin to run in the uncorrelated systematic mode.
Definition: EffiCollection.cxx:444
CP::EffiCollection::FindLRTContainer
CollectionContainer * FindLRTContainer(const xAOD::Muon &mu) const
Definition: EffiCollection.cxx:241
CP::CollectionContainer::nBins
unsigned int nBins() const
Number of bins of the map itself.
Definition: EffiCollection.cxx:452
CP::EffiCollection::PtDependent
@ PtDependent
Definition: EffiCollection.h:54
EfficiencyScaleFactor.h
CP::EffiCollection::GetBinName
std::string GetBinName(unsigned int bin) const
Returns the global bin name conststucted from the axis titles and the bin borders.
Definition: EffiCollection.cxx:300
CP::CollectionContainer::isUpVariation
bool isUpVariation() const
Definition: EffiCollection.cxx:485
CP::EfficiencyScaleFactor
Definition: EfficiencyScaleFactor.h:35
CP::CollectionContainer::CollectionContainer
CollectionContainer(const MuonEfficiencyScaleFactors &ref_tool, EffiCollection::CollectionType FileType)
Nominal constructor... Only needs to know about it's type and the file to load.
Definition: EffiCollection.cxx:339
xAODType
Definition: ObjectType.h:13
CP::CollectionContainer::FindBinSF
int FindBinSF(const xAOD::Muon &mu) const
Returns the global bin number corresponding to the muon kinematics.
Definition: EffiCollection.cxx:470
CP::EffiCollection::m_ref_tool
const MuonEfficiencyScaleFactors & m_ref_tool
Definition: EffiCollection.h:106
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:224
CP::EffiCollection::retrieveSF
EfficiencyScaleFactor * retrieveSF(const xAOD::Muon &mu, unsigned int RunNumber) const
return the correct SF type to provide, depending on eta and the author
Definition: EffiCollection.cxx:245
CP::EffiCollection::m_forward_eff
std::shared_ptr< CollectionContainer > m_forward_eff
Definition: EffiCollection.h:113
EventInfoWrite.RunNumber
RunNumber
Definition: EventInfoWrite.py:50
CP::CollectionContainer::type
EffiCollection::CollectionType type() const
File type of the map.
Definition: EffiCollection.cxx:464
CP::CollectionContainer::sysname
std::string sysname() const
Returns MUON_EFF_<sysname()>
Definition: EffiCollection.cxx:493
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CP::EffiCollection::ZAnalysis
@ ZAnalysis
Definition: EffiCollection.h:45
CP::EffiCollection::Symmetric
@ Symmetric
Definition: EffiCollection.h:53
CP::EffiCollection::m_calo_eff
std::shared_ptr< CollectionContainer > m_calo_eff
Definition: EffiCollection.h:112
CP::EffiCollection::FileTypeName
static std::string FileTypeName(EffiCollection::CollectionType T)
Definition: EffiCollection.cxx:291
CP::EffiCollection::CaloLowPt
@ CaloLowPt
Definition: EffiCollection.h:43
CP::CollectionContainer::SetGlobalOffSet
void SetGlobalOffSet(unsigned int OffSet)
Sets the global offset to align the order in the map into a global numbering scheme.
Definition: EffiCollection.cxx:475
CP::EffiCollection::FindContainer
CollectionContainer * FindContainer(unsigned int bin) const
Definition: EffiCollection.cxx:229
CP::EffiCollection::JPsiAnalysis
@ JPsiAnalysis
Distinguish these two because the systematics are named with an extra LOWPT.
Definition: EffiCollection.h:48
CP::CollectionContainer::findPeriods
std::map< std::string, std::pair< unsigned int, unsigned int > > findPeriods(const MuonEfficiencyScaleFactors &ref_tool) const
Definition: EffiCollection.cxx:367
CP::EffiCollection::m_lrt_lowpt_central_eff
std::shared_ptr< CollectionContainer > m_lrt_lowpt_central_eff
Definition: EffiCollection.h:117
CP::CollectionContainer::m_SF
std::vector< std::shared_ptr< EfficiencyScaleFactor > > m_SF
Definition: EffiCollection.h:181
CP::CollectionContainer::CheckConsistency
bool CheckConsistency()
Consistency check of all scale-factor maps managed by the container instance.
Definition: EffiCollection.cxx:404
CP::CollectionContainer::nOverFlowBins
unsigned int nOverFlowBins() const
Number of overflow bins in the map.
Definition: EffiCollection.cxx:455
CP::EffiCollection::CheckConsistency
bool CheckConsistency()
a consistency check of the scale-factor maps.
Definition: EffiCollection.cxx:112
CP::EffiCollection::m_syst_set
std::unique_ptr< SystematicSet > m_syst_set
The systematic set is returned back to the MuonEfficiencyScaleFactors instance to register The known ...
Definition: EffiCollection.h:121
CP::EffiCollection::isAffectedBySystematic
bool isAffectedBySystematic(const SystematicVariation &variation) const
Returns whether the given set has variations affecting this Collection.
Definition: EffiCollection.cxx:324
CP::CollectionContainer::m_currentSF
EfficiencyScaleFactor * m_currentSF
Definition: EffiCollection.h:182
CP::CollectionContainer::m_binOffSet
unsigned int m_binOffSet
Offset to translate between the bin-numbers in the bin numbers of each file against the global bin-nu...
Definition: EffiCollection.h:187
CP::EffiCollection::getUnCorrelatedSystBin
int getUnCorrelatedSystBin(const xAOD::Muon &mu) const
Returns the bin number from which the scale-factor of the muon is going to be retrieved....
Definition: EffiCollection.cxx:316
CP::CollectionContainer::m_FileType
EffiCollection::CollectionType m_FileType
Definition: EffiCollection.h:184
CP::CollectionContainer::fileName
std::string fileName(const MuonEfficiencyScaleFactors &ref_tool) const
Definition: EffiCollection.cxx:396
CP::EffiCollection::m_central_eff
std::shared_ptr< CollectionContainer > m_central_eff
Make the collection container shared ptr to allow that a systematic EffiCollection can use the same c...
Definition: EffiCollection.h:111
CP::EffiCollection::SetSystematicBin
bool SetSystematicBin(unsigned int Bin)
If systematic decorrelation is activated then the user needs to loop manually over the syst bins.
Definition: EffiCollection.cxx:278
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
EfficiencyScaleFactor
Utility class to manage scale factor histograms Simple container class for scale factor information C...