Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 
22 #include <ColumnarMuon/MuonDef.h>
23 
24 namespace CP {
25  class MuonEfficiencyScaleFactors;
27  class SystematicSet;
28  class SystematicVariation;
29  class CollectionContainer;
35  public:
36  explicit EffiCollection(MuonEfficiencyScaleFactors& ref_tool);
38  EffiCollection(const EffiCollection* Nominal, MuonEfficiencyScaleFactors& ref_tool, const std::string& syst, int syst_bit_map, bool is_up);
39 
41  EfficiencyScaleFactor* retrieveSF(const xAOD::Muon & mu, unsigned int RunNumber) const;
45  Central = 1,
46  Calo = 1<<1,
47  Forward = 1<<2,
48  CentralLowPt = 1<<3,
49  CaloLowPt = 1<<4,
50 
55 
56 
57  };
58  enum Systematic{
59  Symmetric = 1<<6,
60  PtDependent = 1<<7,
61  UnCorrelated = 1<<8,
62  UpVariation = 1<<9,
63  };
64  static std::string FileTypeName(EffiCollection::CollectionType T);
65 
66 
69  bool CheckConsistency();
70 
73  unsigned int nBins() const;
74 
79  bool SetSystematicBin(unsigned int Bin);
80 
82  bool IsLowPtBin(unsigned int Bin) const;
84  bool IsForwardBin(unsigned int Bin) const;
85 
88  std::string GetBinName(unsigned int bin) const;
89 
92  int getUnCorrelatedSystBin(const xAOD::Muon& mu) const;
93 
94 
96  SystematicSet* getSystSet() const;
98  bool isAffectedBySystematic(const SystematicVariation& variation) const;
99  bool isAffectedBySystematic(const SystematicSet& set) const;
100 
101 
105  std::shared_ptr<CollectionContainer> retrieveContainer(CollectionType Type) const;
106 
107  private:
108  CollectionContainer* FindContainer(unsigned int bin) const;
111 
113 
117  std::shared_ptr<CollectionContainer> m_central_eff;
118  std::shared_ptr<CollectionContainer> m_calo_eff;
119  std::shared_ptr<CollectionContainer> m_forward_eff;
120  std::shared_ptr<CollectionContainer> m_lowpt_central_eff;
121  std::shared_ptr<CollectionContainer> m_lowpt_calo_eff;
122  std::shared_ptr<CollectionContainer> m_lrt_central_eff;
123  std::shared_ptr<CollectionContainer> m_lrt_lowpt_central_eff;
124 
127  std::unique_ptr<SystematicSet> m_syst_set;
128 
129  public:
130 
135  columnar::MuonAccessor<char> isLRTmuon {*this, "isLRT", {.isOptional = true}};
136  };
137 
141  public:
144  CollectionContainer(const MuonEfficiencyScaleFactors& ref_tool, CollectionContainer* Nominal, const std::string& syst_name, unsigned int syst_bit_map);
145 
147  EfficiencyScaleFactor* retrieve(unsigned int RunNumer);
148 
150  bool isBinInMap (unsigned int bin) const;
152  bool CheckConsistency();
153 
155  std::string sysname() const;
156 
158  bool SetSystematicBin(unsigned int Bin);
159 
162  void SetGlobalOffSet(unsigned int OffSet);
163 
165  unsigned int nBins() const;
167  unsigned int nOverFlowBins() const;
169  bool isOverFlowBin(int b) const;
170 
171 
173  unsigned int globalOffSet() const;
174 
176  std::string GetBinName(unsigned int Bin) const;
177 
180  int FindBinSF(const xAOD::Muon &mu) const;
181 
184 
185  bool isNominal() const;
186  bool isUpVariation() const;
187  bool separateBinSyst() const;
188 
189  private:
190  std::map<std::string, std::pair<unsigned int, unsigned int>> findPeriods(const MuonEfficiencyScaleFactors& ref_tool) const;
191  std::string fileName(const MuonEfficiencyScaleFactors& ref_tool) const;
192 
193  bool LoadPeriod(unsigned int RunNumber);
194 
195  std::vector<std::shared_ptr<EfficiencyScaleFactor>> m_SF;
197 
201  unsigned int m_binOffSet;
202 
203  public:
204  void addSubtoolsTo (columnar::ColumnarTool<>& parentTool);
205 
206  };
207 
208 }
209 #endif /* EFFICOLLECTION_H_ */
CP::EffiCollection::Systematic
Systematic
Definition: EffiCollection.h:58
CP::EffiCollection
The EffiCollection class handles the 5 different scale-factor maps binned in time.
Definition: EffiCollection.h:34
CP::EffiCollection::etaAcc
columnar::MuonAccessor< columnar::RetypeColumn< double, float > > etaAcc
Definition: EffiCollection.h:133
CP::EffiCollection::CentralLowPt
@ CentralLowPt
Definition: EffiCollection.h:48
CP::EffiCollection::IsForwardBin
bool IsForwardBin(unsigned int Bin) const
Checks whether the i-th bin belongs to the forward map.
Definition: EffiCollection.cxx:302
Calo
Definition: CaloTrackingGeometryBuilder.h:15
CP::EffiCollection::m_muons
columnar::MuonAccessor< columnar::ObjectColumn > m_muons
Definition: EffiCollection.h:131
CP::CollectionContainer::LoadPeriod
bool LoadPeriod(unsigned int RunNumber)
Definition: EffiCollection.cxx:441
CP::EffiCollection::getSystSet
SystematicSet * getSystSet() const
Returns the systematic set affecting this collection.
Definition: EffiCollection.cxx:336
CP::EffiCollection::FindLRTContainer
CollectionContainer * FindLRTContainer(columnar::MuonId mu) const
Definition: EffiCollection.cxx:253
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:298
CP::EffiCollection::UnCorrelated
@ UnCorrelated
Definition: EffiCollection.h:61
CP::EffiCollection::m_lowpt_central_eff
std::shared_ptr< CollectionContainer > m_lowpt_central_eff
Definition: EffiCollection.h:120
CP::EffiCollection::Central
@ Central
The five different scale-factor maps.
Definition: EffiCollection.h:45
CP::CollectionContainer::separateBinSyst
bool separateBinSyst() const
Definition: EffiCollection.cxx:504
CP::MuonEfficiencyScaleFactors
Definition: MuonEfficiencyScaleFactors.h:29
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:476
CP::CollectionContainer::isNominal
bool isNominal() const
Definition: EffiCollection.cxx:496
MuonEfficiencyType.h
CP::CollectionContainer::globalOffSet
unsigned int globalOffSet() const
Global offset of the bin numbers.
Definition: EffiCollection.cxx:493
CP::CollectionContainer::isOverFlowBin
bool isOverFlowBin(int b) const
Check whether the bin is overflow or not.
Definition: EffiCollection.cxx:473
CP::CollectionContainer::retrieve
EfficiencyScaleFactor * retrieve(unsigned int RunNumer)
Retrieve the scale-factor map belonging to that particular run of data-taking.
Definition: EffiCollection.cxx:453
CP::SystematicVariation
Definition: SystematicVariation.h:47
CP::CollectionContainer
The collection container manages the time binning of a particular scale-factor map.
Definition: EffiCollection.h:140
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:49
CP::EffiCollection::m_lrt_central_eff
std::shared_ptr< CollectionContainer > m_lrt_central_eff
Definition: EffiCollection.h:122
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
CP::EffiCollection::Forward
@ Forward
Definition: EffiCollection.h:47
CP::EffiCollection::EffiCollection
EffiCollection(MuonEfficiencyScaleFactors &ref_tool)
Definition: EffiCollection.cxx:17
CP::EffiCollection::m_lowpt_calo_eff
std::shared_ptr< CollectionContainer > m_lowpt_calo_eff
Definition: EffiCollection.h:121
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:266
CP::EffiCollection::CollectionType
CollectionType
Definition: EffiCollection.h:43
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:117
CP::EffiCollection::UpVariation
@ UpVariation
Definition: EffiCollection.h:62
CP::CollectionContainer::GetBinName
std::string GetBinName(unsigned int Bin) const
Name of the i-th bin.
Definition: EffiCollection.cxx:482
CP::CollectionContainer::SetSystematicBin
bool SetSystematicBin(unsigned int Bin)
Activate this bin to run in the uncorrelated systematic mode.
Definition: EffiCollection.cxx:459
ColumnAccessor.h
CP::CollectionContainer::nBins
unsigned int nBins() const
Number of bins of the map itself.
Definition: EffiCollection.cxx:467
CP::EffiCollection::PtDependent
@ PtDependent
Definition: EffiCollection.h:60
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:315
ObjectColumn.h
CP::CollectionContainer::isUpVariation
bool isUpVariation() const
Definition: EffiCollection.cxx:500
ColumnarTool.h
CP::EffiCollection::muonTypeAcc
columnar::MuonAccessor< columnar::RetypeColumn< xAOD::Muon::MuonType, std::uint16_t > > muonTypeAcc
Definition: EffiCollection.h:134
CP::EfficiencyScaleFactor
Definition: EfficiencyScaleFactor.h:40
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:354
xAODType
Definition: ObjectType.h:13
MuonDef.h
CP::EffiCollection::isLRTmuon
columnar::MuonAccessor< char > isLRTmuon
Definition: EffiCollection.h:135
columnar::final
CM final
Definition: ColumnAccessor.h:106
CP::CollectionContainer::FindBinSF
int FindBinSF(const xAOD::Muon &mu) const
Returns the global bin number corresponding to the muon kinematics.
Definition: EffiCollection.cxx:485
CP::EffiCollection::m_ref_tool
const MuonEfficiencyScaleFactors & m_ref_tool
Definition: EffiCollection.h:112
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:232
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:257
CP::EffiCollection::m_forward_eff
std::shared_ptr< CollectionContainer > m_forward_eff
Definition: EffiCollection.h:119
EventInfoWrite.RunNumber
RunNumber
Definition: EventInfoWrite.py:50
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition: ObjectId.h:18
CP::CollectionContainer::type
EffiCollection::CollectionType type() const
File type of the map.
Definition: EffiCollection.cxx:479
CP::CollectionContainer::sysname
std::string sysname() const
Returns MUON_EFF_<sysname()>
Definition: EffiCollection.cxx:508
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
CP::CollectionContainer::addSubtoolsTo
void addSubtoolsTo(columnar::ColumnarTool<> &parentTool)
Definition: EffiCollection.cxx:512
CP::EffiCollection::ZAnalysis
@ ZAnalysis
Definition: EffiCollection.h:51
CP::EffiCollection::Symmetric
@ Symmetric
Definition: EffiCollection.h:59
CP::EffiCollection::m_calo_eff
std::shared_ptr< CollectionContainer > m_calo_eff
Definition: EffiCollection.h:118
CP::EffiCollection::FileTypeName
static std::string FileTypeName(EffiCollection::CollectionType T)
Definition: EffiCollection.cxx:306
CP::EffiCollection::CaloLowPt
@ CaloLowPt
Definition: EffiCollection.h:49
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:490
CP::EffiCollection::FindContainer
CollectionContainer * FindContainer(unsigned int bin) const
Definition: EffiCollection.cxx:241
CP::EffiCollection::JPsiAnalysis
@ JPsiAnalysis
Distinguish these two because the systematics are named with an extra LOWPT.
Definition: EffiCollection.h:54
CP::CollectionContainer::findPeriods
std::map< std::string, std::pair< unsigned int, unsigned int > > findPeriods(const MuonEfficiencyScaleFactors &ref_tool) const
Definition: EffiCollection.cxx:382
CP::EffiCollection::m_lrt_lowpt_central_eff
std::shared_ptr< CollectionContainer > m_lrt_lowpt_central_eff
Definition: EffiCollection.h:123
CP::CollectionContainer::m_SF
std::vector< std::shared_ptr< EfficiencyScaleFactor > > m_SF
Definition: EffiCollection.h:195
CP::CollectionContainer::CheckConsistency
bool CheckConsistency()
Consistency check of all scale-factor maps managed by the container instance.
Definition: EffiCollection.cxx:419
CP::CollectionContainer::nOverFlowBins
unsigned int nOverFlowBins() const
Number of overflow bins in the map.
Definition: EffiCollection.cxx:470
columnar::ColumnarTool
the base class for all columnar components
Definition: ColumnAccessorDataArray.h:17
CP::EffiCollection::CheckConsistency
bool CheckConsistency()
a consistency check of the scale-factor maps.
Definition: EffiCollection.cxx:125
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:127
CP::EffiCollection::isAffectedBySystematic
bool isAffectedBySystematic(const SystematicVariation &variation) const
Returns whether the given set has variations affecting this Collection.
Definition: EffiCollection.cxx:339
CP::CollectionContainer::m_currentSF
EfficiencyScaleFactor * m_currentSF
Definition: EffiCollection.h:196
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:201
columnar::AccessorTemplate
the raw column accessor template class
Definition: ColumnAccessor.h:81
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:331
CP::CollectionContainer::m_FileType
EffiCollection::CollectionType m_FileType
Definition: EffiCollection.h:198
CP::CollectionContainer::fileName
std::string fileName(const MuonEfficiencyScaleFactors &ref_tool) const
Definition: EffiCollection.cxx:411
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:117
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:293
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
CP::EffiCollection::ptAcc
columnar::MuonAccessor< columnar::RetypeColumn< double, float > > ptAcc
Definition: EffiCollection.h:132
EfficiencyScaleFactor
Utility class to manage scale factor histograms Simple container class for scale factor information C...