ATLAS Offline Software
Loading...
Searching...
No Matches
CP::EffiCollection Class Referencefinal

The EffiCollection class handles the 5 different scale-factor maps binned in time. More...

#include <EffiCollection.h>

Inheritance diagram for CP::EffiCollection:
Collaboration diagram for CP::EffiCollection:

Public Types

enum  CollectionType {
  Central = 1 , Calo = 1<<1 , Forward = 1<<2 , CentralLowPt = 1<<3 ,
  CaloLowPt = 1<<4 , ZAnalysis = Central | Calo | Forward , JPsiAnalysis = CentralLowPt | CaloLowPt
}
enum  Systematic { Symmetric = 1<<6 , PtDependent = 1<<7 , UnCorrelated = 1<<8 , UpVariation = 1<<9 }

Public Member Functions

 EffiCollection (MuonEfficiencyScaleFactors &ref_tool)
 EffiCollection (const EffiCollection *Nominal, MuonEfficiencyScaleFactors &ref_tool, const std::string &syst, int syst_bit_map, bool is_up)
 Constructor with nominal as fallback..
EfficiencyScaleFactorretrieveSF (const xAOD::Muon &mu, unsigned int RunNumber) const
 return the correct SF type to provide, depending on eta and the author
EfficiencyScaleFactorretrieveSF (columnar::MuonId mu, unsigned int RunNumber) const
bool CheckConsistency ()
 a consistency check of the scale-factor maps.
unsigned int nBins () const
 Get the number of all bins in the scale-factor maps including the overflow & underflow bins.
bool SetSystematicBin (unsigned int Bin)
 If systematic decorrelation is activated then the user needs to loop manually over the syst bins.
bool IsLowPtBin (unsigned int Bin) const
 Checks whether the i-th bin belongs to the low-pt map...
bool IsForwardBin (unsigned int Bin) const
 Checks whether the i-th bin belongs to the forward map.
std::string GetBinName (unsigned int bin) const
 Returns the global bin name conststucted from the axis titles and the bin borders.
int getUnCorrelatedSystBin (const xAOD::Muon &mu) const
 Returns the bin number from which the scale-factor of the muon is going to be retrieved...
SystematicSetgetSystSet () const
 Returns the systematic set affecting this collection.
bool isAffectedBySystematic (const SystematicVariation &variation) const
 Returns whether the given set has variations affecting this Collection.
bool isAffectedBySystematic (const SystematicSet &set) const
std::shared_ptr< CollectionContainerretrieveContainer (CollectionType Type) const
 Method to retrieve a container from the class ordered by a collection type This method is mainly used to propagate the nominal maps to the variations as fallback maps if no variation has been defined in this situation.

Static Public Member Functions

static std::string FileTypeName (EffiCollection::CollectionType T)

Public Attributes

columnar::MuonAccessor< columnar::ObjectColumnm_muons {*this, "Muons"}
columnar::MuonAccessor< columnar::RetypeColumn< double, float > > ptAcc {*this, "pt"}
columnar::MuonAccessor< columnar::RetypeColumn< double, float > > etaAcc {*this, "eta"}
columnar::MuonAccessor< columnar::RetypeColumn< xAOD::Muon::MuonType, std::uint16_t > > muonTypeAcc {*this, "muonType"}
columnar::MuonAccessor< charisLRTmuon {*this, "isLRT", {.isOptional = true}}

Private Member Functions

CollectionContainerFindContainer (unsigned int bin) const
CollectionContainerFindContainer (columnar::MuonId mu) const
CollectionContainerFindLRTContainer (columnar::MuonId mu) const

Private Attributes

const MuonEfficiencyScaleFactorsm_ref_tool
std::shared_ptr< CollectionContainerm_central_eff
 Make the collection container shared ptr to allow that a systematic EffiCollection can use the same container as the nominal one if the current systematic has no effect on that particular container....
std::shared_ptr< CollectionContainerm_calo_eff
std::shared_ptr< CollectionContainerm_forward_eff
std::shared_ptr< CollectionContainerm_lowpt_central_eff
std::shared_ptr< CollectionContainerm_lowpt_calo_eff
std::shared_ptr< CollectionContainerm_lrt_central_eff
std::shared_ptr< CollectionContainerm_lrt_lowpt_central_eff
std::unique_ptr< SystematicSetm_syst_set
 The systematic set is returned back to the MuonEfficiencyScaleFactors instance to register The known systematics to the global service.

Detailed Description

The EffiCollection class handles the 5 different scale-factor maps binned in time.

Each muon is piped to the correct map based whether it's a calo-tag muon, belongs to the high-eta region or has low-pt. There exists one instance of the EffiCollection foreach systematic variation and nominal. Scale-factor maps which are not affected by a systematic, especially in the case of common vs. low-pt, are taken from the Nominal maps.

Definition at line 34 of file EffiCollection.h.

Member Enumeration Documentation

◆ CollectionType

Enumerator
Central 

The five different scale-factor maps.

Calo 
Forward 
CentralLowPt 
CaloLowPt 
ZAnalysis 
JPsiAnalysis 

Distinguish these two because the systematics are named with an extra LOWPT.

Definition at line 43 of file EffiCollection.h.

43 {
45 Central = 1,
46 Calo = 1<<1,
47 Forward = 1<<2,
48 CentralLowPt = 1<<3,
49 CaloLowPt = 1<<4,
50
55
56
57 };
@ JPsiAnalysis
Distinguish these two because the systematics are named with an extra LOWPT.
@ Central
The five different scale-factor maps.

◆ Systematic

Enumerator
Symmetric 
PtDependent 
UnCorrelated 
UpVariation 

Definition at line 58 of file EffiCollection.h.

Constructor & Destructor Documentation

◆ EffiCollection() [1/2]

CP::EffiCollection::EffiCollection ( MuonEfficiencyScaleFactors & ref_tool)
explicit

Definition at line 17 of file EffiCollection.cxx.

17 :
18 m_ref_tool(ref_tool),
20 m_calo_eff(),
26 m_syst_set(std::make_unique<SystematicSet>()){
27
28 ref_tool.addSubtool (*this);
29
30 m_central_eff = std::make_shared<CollectionContainer>(m_ref_tool, CollectionType::Central);
31 m_central_eff->addSubtoolsTo(*this);
32 if (m_ref_tool.filename_Calo() != m_ref_tool.filename_Central()){
33 m_calo_eff = std::make_shared<CollectionContainer>(m_ref_tool,CollectionType::Calo);
34 m_calo_eff->addSubtoolsTo(*this);
36
37 if (m_ref_tool.filename_HighEta() != m_ref_tool.filename_Central()){
38 m_forward_eff = std::make_shared<CollectionContainer>(m_ref_tool,CollectionType::Forward);
39 m_forward_eff->addSubtoolsTo(*this);
41
42 if (m_ref_tool.lowPtTransition() > 0 && m_ref_tool.filename_LowPt() != m_ref_tool.filename_Central()){
43 m_lowpt_central_eff = std::make_shared<CollectionContainer>(m_ref_tool,CollectionType::CentralLowPt);
44 m_lowpt_central_eff->addSubtoolsTo(*this);
46
47 if (m_ref_tool.lowPtTransition() > 0 && m_ref_tool.filename_LowPtCalo() != m_ref_tool.filename_Central()){
48 m_lowpt_calo_eff = std::make_shared<CollectionContainer>(m_ref_tool, CollectionType::CaloLowPt);
49 m_lowpt_calo_eff->addSubtoolsTo(*this);
51
52 if(m_ref_tool.use_lrt()) {
53 if (m_ref_tool.filename_LRTCentral() != m_ref_tool.filename_Central()) {
54 m_lrt_central_eff = std::make_shared<CollectionContainer>(m_ref_tool,CollectionType::Central);
55 }
56 else {
58 }
59 if (m_ref_tool.lowPtTransition() > 0 ) {
60 if (m_ref_tool.filename_LRTLowPt() == m_ref_tool.filename_LowPt()) {
62 }
63 else if (m_ref_tool.filename_LRTLowPt() == m_ref_tool.filename_Central()) {
65 }
66 else {
67 m_lrt_lowpt_central_eff = std::make_shared<CollectionContainer>(m_ref_tool,CollectionType::CentralLowPt);
68 }
69 }
70 else {
72 }
73 }
74 }
std::shared_ptr< CollectionContainer > m_forward_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...
std::shared_ptr< CollectionContainer > m_calo_eff
std::shared_ptr< CollectionContainer > m_lrt_central_eff
std::shared_ptr< CollectionContainer > m_lowpt_central_eff
std::shared_ptr< CollectionContainer > m_lowpt_calo_eff
std::unique_ptr< SystematicSet > m_syst_set
The systematic set is returned back to the MuonEfficiencyScaleFactors instance to register The known ...
const MuonEfficiencyScaleFactors & m_ref_tool
std::shared_ptr< CollectionContainer > m_lrt_lowpt_central_eff

◆ EffiCollection() [2/2]

CP::EffiCollection::EffiCollection ( const EffiCollection * Nominal,
MuonEfficiencyScaleFactors & ref_tool,
const std::string & syst,
int syst_bit_map,
bool is_up )

Constructor with nominal as fallback..

Use a lambda function to assign the maps easily

Only the Z reconstruction analysis has different files for bulk / calo-tag / low-pt and forward eta

Definition at line 76 of file EffiCollection.cxx.

76 :
77 m_ref_tool(ref_tool),
79 m_calo_eff(),
85 m_syst_set() {
86
87 ref_tool.addSubtool (*this);
88
89 if (is_up) syst_bit_map |= EffiCollection::UpVariation;
91 std::function< std::shared_ptr<CollectionContainer>(CollectionType)> make_variation = [this,&ref_tool, Nominal, syst_bit_map, syst](CollectionType type){
92 if (syst_bit_map & type) {
93 return std::make_shared<CollectionContainer>(ref_tool,
94 Nominal->retrieveContainer(type).get(),
95 syst, syst_bit_map); }
97 if (ref_tool.measurement() != MuonEfficiencyType::Reco) return m_central_eff;
98 return Nominal->retrieveContainer(type);
99 };
100 m_central_eff = make_variation(CollectionType::Central);
101 m_central_eff->addSubtoolsTo (*this);
102 m_forward_eff = make_variation(CollectionType::Forward);
103 m_forward_eff->addSubtoolsTo (*this);
104 m_calo_eff = make_variation(CollectionType::Calo);
105 m_calo_eff->addSubtoolsTo (*this);
107 m_lowpt_central_eff->addSubtoolsTo (*this);
109 m_lowpt_calo_eff->addSubtoolsTo (*this);
110
111 if (m_ref_tool.use_lrt()) {
114 }
115 }

Member Function Documentation

◆ CheckConsistency()

bool CP::EffiCollection::CheckConsistency ( )

a consistency check of the scale-factor maps.

All scale-factor maps must be present and there must no overlapping periods to pass this test.

At this stage we know that all efficiencies have been loaded successfully. We need to now to order the maps to make global bin numbers

Systematic constructor has been called. We can now assemble the systematic variations

Let the world implode... Yeaha register foreach bin a systematic variation

Definition at line 125 of file EffiCollection.cxx.

125 {
126 if (!m_central_eff || !m_central_eff->CheckConsistency()) {
127 Error("EffiCollection()", "Consistency check for central file failed");
128 return false;
129 }
130 if (!m_calo_eff || !m_calo_eff->CheckConsistency()) {
131 Error("EffiCollection()", "Consistency check for calo file failed");
132 return false;
133 }
134 if (!m_forward_eff || !m_forward_eff->CheckConsistency()) {
135 Error("EffiCollection()", "Consistency check for forward file failed");
136 return false;
137 }
138 if (!m_lowpt_central_eff || !m_lowpt_central_eff->CheckConsistency()) {
139 Error("EffiCollection()", "Consistency check for low-pt file failed");
140 return false;
141 }
142 if (!m_lowpt_calo_eff || !m_lowpt_calo_eff->CheckConsistency()) {
143 Error("EffiCollection()", "Consistency check for low-pt calo file failed");
144 return false;
145 }
146 if (m_ref_tool.use_lrt()) {
147 if (!m_lrt_central_eff || !m_lrt_central_eff->CheckConsistency()) {
148 Error("EffiCollection()", "Consistency check for LRT central file failed");
149 return false;
150 }
151 if (!m_lrt_lowpt_central_eff || !m_lrt_lowpt_central_eff->CheckConsistency()) {
152 Error("EffiCollection()", "Consistency check for LRT low-pt file failed");
153 return false;
154 }
155 }
159 unsigned int n = m_central_eff->nBins();
160 std::function<void (CollectionContainer*)> assign_mapping = [this, &n](CollectionContainer* container){
161 if (container != m_central_eff.get() && container->separateBinSyst()){
162 container->SetGlobalOffSet(n);
163 n += container->nBins();
164 };
165 };
166 assign_mapping(m_calo_eff.get());
167 assign_mapping(m_calo_eff.get());
168 assign_mapping(m_lowpt_central_eff.get());
169 assign_mapping(m_lowpt_calo_eff.get());
170
171 assign_mapping(m_forward_eff.get());
172
173 if (m_ref_tool.use_lrt()) {
174 assign_mapping(m_lrt_central_eff.get());
175 assign_mapping(m_lrt_lowpt_central_eff.get());
176 }
179 if (!m_syst_set){
180 m_syst_set = std::make_unique<CP::SystematicSet>();
181 size_t glob_sys = m_ref_tool.getPosition(this);
182 if (glob_sys > m_ref_tool.getNCollections()){
183 Error("EffiCollection()", "Invalid position in the list of systematics. It seems that I'm not part of the referring ScaleFactorTool.");
184 return false;
185 }
188
189 std::shared_ptr<CollectionContainer> container = retrieveContainer(file_type);
190 if (container->isNominal()) continue;
191 if (container->separateBinSyst()){
194 for (unsigned int b = container->nBins() - 1; b > 0 ; --b){
195 unsigned int bin = b + container->globalOffSet();
196 if (container->isOverFlowBin(bin)) continue;
197 m_syst_set->insert(CP::SystematicVariation::makeToyVariation("MUON_EFF_" + container->sysname() + GetBinName(bin) , bin, glob_sys));
198 }
199 } else {
200 m_syst_set->insert( SystematicVariation("MUON_EFF_" + container->sysname(), container->isUpVariation() ? 1 : -1));
201 }
202 }
203 }
204 return true;
205 }
std::string GetBinName(unsigned int bin) const
Returns the global bin name conststucted from the axis titles and the bin borders.
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...
static SystematicVariation makeToyVariation(const std::string &basename, unsigned toyIndex, float toyScale)
constructor for toy systematics
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition Error.h:16

◆ FileTypeName()

std::string CP::EffiCollection::FileTypeName ( EffiCollection::CollectionType T)
static

Definition at line 306 of file EffiCollection.cxx.

306 {
307 if (T == CollectionType::Central) return "Central";
308 if (T == CollectionType::Calo) return "Calo";
309 if (T == CollectionType::Forward) return "Forward";
310 if (T == CollectionType::CentralLowPt) return "CentralLowPt";
311 if (T == CollectionType::CaloLowPt) return "CaloLowPt";
312 return "EffiCollection::FileTypeName() - WARNING: Unknown EffiCollection::CollectionType!";
313 }

◆ FindContainer() [1/2]

CollectionContainer * CP::EffiCollection::FindContainer ( columnar::MuonId mu) const
private

If the isLRT decor is not available, try to see if patternRecoInfo is available for the corresponding ID track.

All LRT muons should have ID tracks. The muons without ID tracks have to come from the standard muon container.

Definition at line 207 of file EffiCollection.cxx.

207 {
208 if (m_ref_tool.use_lrt()) {
209 if (isLRTmuon.isAvailable(mu)) {
210 if (isLRTmuon(mu)) return FindLRTContainer(mu);
211 }
212 else {
213 static const SG::AuxElement::Accessor<uint64_t> patternAcc("patternRecoInfo");
214 const xAOD::TrackParticle* idtrack = mu.getXAODObject().trackParticle(xAOD::Muon::InnerDetectorTrackParticle);
215 if(idtrack) {
216 if(!patternAcc.isAvailable(*idtrack)) {
217 Error("CollectionContainer", "No information available to tell if the muon is LRT or standard. Either run MuonLRTMergingAlg to decorate with `isLRT` flag, or supply the patternRecoInfo for the original ID track.");
218 }
219 std::bitset<xAOD::NumberOfTrackRecoInfo> patternBitSet(patternAcc(*idtrack));
220 if (patternBitSet.test(xAOD::SiSpacePointsSeedMaker_LargeD0)) return FindLRTContainer(mu);
221 }
222 }
223 }
224 if (ptAcc(mu) < m_ref_tool.lowPtTransition()) {
225 if (std::abs(etaAcc(mu)) >= 2.5) {
226 return m_forward_eff.get();
227 }
228 if (muonTypeAcc(mu) == xAOD::Muon::CaloTagged) {
229 return m_lowpt_calo_eff.get();
230 }
231 return m_lowpt_central_eff.get();
232 }
233 if (muonTypeAcc(mu) == xAOD::Muon::CaloTagged) {
234 return m_calo_eff.get();
235 } else if (std::abs(etaAcc(mu)) < 2.5) {
236 return m_central_eff.get();
237 } else {
238 return m_forward_eff.get();
239 }
240 }
columnar::MuonAccessor< columnar::RetypeColumn< double, float > > etaAcc
columnar::MuonAccessor< columnar::RetypeColumn< xAOD::Muon::MuonType, std::uint16_t > > muonTypeAcc
CollectionContainer * FindLRTContainer(columnar::MuonId mu) const
columnar::MuonAccessor< columnar::RetypeColumn< double, float > > ptAcc
columnar::MuonAccessor< char > isLRTmuon
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:572
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ SiSpacePointsSeedMaker_LargeD0

◆ FindContainer() [2/2]

CollectionContainer * CP::EffiCollection::FindContainer ( unsigned int bin) const
private

Definition at line 241 of file EffiCollection.cxx.

241 {
242 if (m_central_eff->isBinInMap(bin)) return m_central_eff.get();
243 if (m_forward_eff->isBinInMap(bin)) return m_forward_eff.get();
244 if (m_calo_eff->isBinInMap(bin)) return m_calo_eff.get();
245 if (m_lowpt_central_eff->isBinInMap(bin)) return m_lowpt_central_eff.get();
246 if (m_lowpt_calo_eff->isBinInMap(bin)) return m_lowpt_calo_eff.get();
247 if (m_ref_tool.use_lrt()) {
248 if (m_lrt_central_eff->isBinInMap(bin)) return m_lrt_central_eff.get();
249 if (m_lrt_lowpt_central_eff->isBinInMap(bin)) return m_lrt_lowpt_central_eff.get();
250 }
251 return nullptr;
252 }

◆ FindLRTContainer()

CollectionContainer * CP::EffiCollection::FindLRTContainer ( columnar::MuonId mu) const
private

Definition at line 253 of file EffiCollection.cxx.

253 {
254 if (ptAcc(mu) < m_ref_tool.lowPtTransition()) return m_lrt_lowpt_central_eff.get();
255 else return m_lrt_central_eff.get();
256 }

◆ GetBinName()

std::string CP::EffiCollection::GetBinName ( unsigned int bin) const

Returns the global bin name conststucted from the axis titles and the bin borders.

Definition at line 315 of file EffiCollection.cxx.

315 {
316 CollectionContainer* Cont = FindContainer(bin);
317 if (Cont) {
318 std::string BinName = FileTypeName(Cont->type()) +"_"+ Cont->GetBinName(bin);
319 for (const std::string& R : ToRemove) {
320 BinName = ReplaceExpInString(BinName, R, "");
321 }
322 for (const stringpair& R : ToReplace) {
323 BinName = ReplaceExpInString(BinName, R.first, R.second);
324 }
325 return BinName;
326 }
327 Warning("EffiCollection::GetBinName()", "Unknown bin %u", bin);
328
329 return "UNKNOWN_BIN";
330 }
CollectionContainer * FindContainer(unsigned int bin) const
static std::string FileTypeName(EffiCollection::CollectionType T)
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
std::string ReplaceExpInString(std::string str, const std::string &exp, const std::string &rep)
Replaces all expressions an string by something else.

◆ getSystSet()

SystematicSet * CP::EffiCollection::getSystSet ( ) const

Returns the systematic set affecting this collection.

Definition at line 336 of file EffiCollection.cxx.

336 {
337 return m_syst_set.get();
338 }

◆ getUnCorrelatedSystBin()

int CP::EffiCollection::getUnCorrelatedSystBin ( const xAOD::Muon & mu) const

Returns the bin number from which the scale-factor of the muon is going to be retrieved...

Definition at line 331 of file EffiCollection.cxx.

331 {
332 CollectionContainer* container = FindContainer(mu);
333 if (container) return container->FindBinSF(mu);
334 return -1;
335 }

◆ isAffectedBySystematic() [1/2]

bool CP::EffiCollection::isAffectedBySystematic ( const SystematicSet & set) const

Definition at line 342 of file EffiCollection.cxx.

342 {
343 if (set.empty()) return m_syst_set->empty();
344 for (const SystematicVariation& variation: set){
345 if (isAffectedBySystematic(variation)) return true;
346 }
347 return false;
348 }
bool isAffectedBySystematic(const SystematicVariation &variation) const
Returns whether the given set has variations affecting this Collection.
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

◆ isAffectedBySystematic() [2/2]

bool CP::EffiCollection::isAffectedBySystematic ( const SystematicVariation & variation) const

Returns whether the given set has variations affecting this Collection.

Definition at line 339 of file EffiCollection.cxx.

339 {
340 return m_syst_set->find(variation) != m_syst_set->end();
341 }

◆ IsForwardBin()

bool CP::EffiCollection::IsForwardBin ( unsigned int Bin) const

Checks whether the i-th bin belongs to the forward map.

Definition at line 302 of file EffiCollection.cxx.

302 {
303 return m_forward_eff != m_central_eff && m_forward_eff->isBinInMap(Bin);
304 }

◆ IsLowPtBin()

bool CP::EffiCollection::IsLowPtBin ( unsigned int Bin) const

Checks whether the i-th bin belongs to the low-pt map...

Definition at line 298 of file EffiCollection.cxx.

298 {
299 return (m_central_eff != m_lowpt_central_eff && m_lowpt_central_eff->isBinInMap(Bin)) ||
300 (m_central_eff != m_lowpt_calo_eff && m_lowpt_calo_eff->isBinInMap(Bin));
301 }

◆ nBins()

unsigned int CP::EffiCollection::nBins ( ) const

Get the number of all bins in the scale-factor maps including the overflow & underflow bins.

Definition at line 266 of file EffiCollection.cxx.

266 {
267 unsigned int Nbins = 0;
268 if (m_central_eff) {
269 Nbins += m_central_eff->nBins();
270 }
271 if (m_central_eff != m_calo_eff) {
272 Nbins += m_calo_eff->nBins();
273 }
275 Nbins += m_forward_eff->nBins();
276 }
278 Nbins += m_lowpt_central_eff->nBins();
279 }
281 Nbins += m_lowpt_calo_eff->nBins();
282 }
283 if (m_ref_tool.use_lrt()) {
284 if (m_lrt_central_eff) {
285 Nbins += m_lrt_central_eff->nBins();
286 }
288 Nbins += m_lrt_lowpt_central_eff->nBins();
289 }
290 }
291 return Nbins;
292 }

◆ retrieveContainer()

std::shared_ptr< CollectionContainer > CP::EffiCollection::retrieveContainer ( CollectionType Type) const

Method to retrieve a container from the class ordered by a collection type This method is mainly used to propagate the nominal maps to the variations as fallback maps if no variation has been defined in this situation.

Definition at line 117 of file EffiCollection.cxx.

117 {
120 if (Type == CollectionType::Calo) return m_calo_eff;
123 return std::shared_ptr<CollectionContainer>();
124 }
RootType Type

◆ retrieveSF() [1/2]

EfficiencyScaleFactor * CP::EffiCollection::retrieveSF ( columnar::MuonId mu,
unsigned int RunNumber ) const

Definition at line 260 of file EffiCollection.cxx.

260 {
261 CollectionContainer* Cont = FindContainer(mu);
262 if (Cont != nullptr) return Cont->retrieve(RunNumber);
263 Warning("EffiCollection::retrieveSF()", "Invalid muon");
264 return nullptr;
265 }

◆ retrieveSF() [2/2]

EfficiencyScaleFactor * CP::EffiCollection::retrieveSF ( const xAOD::Muon & mu,
unsigned int RunNumber ) const

return the correct SF type to provide, depending on eta and the author

Definition at line 257 of file EffiCollection.cxx.

257 {
258 return retrieveSF (columnar::MuonId (mu), RunNumber);
259 }
EfficiencyScaleFactor * retrieveSF(const xAOD::Muon &mu, unsigned int RunNumber) const
return the correct SF type to provide, depending on eta and the author
ObjectId< ContainerId::muon > MuonId
Definition MuonDef.h:25

◆ SetSystematicBin()

bool CP::EffiCollection::SetSystematicBin ( unsigned int Bin)

If systematic decorrelation is activated then the user needs to loop manually over the syst bins.

This method activates the i-th bin to be active. For the remaining bins the nominal scale-factor is returned instead.

Definition at line 293 of file EffiCollection.cxx.

293 {
294 CollectionContainer* Cont = FindContainer(Bin);
295 if (!Cont) return false;
296 return Cont->SetSystematicBin(Bin);
297 }

Member Data Documentation

◆ etaAcc

columnar::MuonAccessor<columnar::RetypeColumn<double,float> > CP::EffiCollection::etaAcc {*this, "eta"}

Definition at line 133 of file EffiCollection.h.

133{*this, "eta"};

◆ isLRTmuon

columnar::MuonAccessor<char> CP::EffiCollection::isLRTmuon {*this, "isLRT", {.isOptional = true}}

Definition at line 135 of file EffiCollection.h.

135{*this, "isLRT", {.isOptional = true}};

◆ m_calo_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_calo_eff
private

Definition at line 118 of file EffiCollection.h.

◆ m_central_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_central_eff
private

Make the collection container shared ptr to allow that a systematic EffiCollection can use the same container as the nominal one if the current systematic has no effect on that particular container....

Definition at line 117 of file EffiCollection.h.

◆ m_forward_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_forward_eff
private

Definition at line 119 of file EffiCollection.h.

◆ m_lowpt_calo_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_lowpt_calo_eff
private

Definition at line 121 of file EffiCollection.h.

◆ m_lowpt_central_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_lowpt_central_eff
private

Definition at line 120 of file EffiCollection.h.

◆ m_lrt_central_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_lrt_central_eff
private

Definition at line 122 of file EffiCollection.h.

◆ m_lrt_lowpt_central_eff

std::shared_ptr<CollectionContainer> CP::EffiCollection::m_lrt_lowpt_central_eff
private

Definition at line 123 of file EffiCollection.h.

◆ m_muons

columnar::MuonAccessor<columnar::ObjectColumn> CP::EffiCollection::m_muons {*this, "Muons"}

Definition at line 131 of file EffiCollection.h.

131{*this, "Muons"};

◆ m_ref_tool

const MuonEfficiencyScaleFactors& CP::EffiCollection::m_ref_tool
private

Definition at line 112 of file EffiCollection.h.

◆ m_syst_set

std::unique_ptr<SystematicSet> CP::EffiCollection::m_syst_set
private

The systematic set is returned back to the MuonEfficiencyScaleFactors instance to register The known systematics to the global service.

Definition at line 127 of file EffiCollection.h.

◆ muonTypeAcc

columnar::MuonAccessor<columnar::RetypeColumn<xAOD::Muon::MuonType,std::uint16_t> > CP::EffiCollection::muonTypeAcc {*this, "muonType"}

Definition at line 134 of file EffiCollection.h.

134{*this, "muonType"};

◆ ptAcc

columnar::MuonAccessor<columnar::RetypeColumn<double,float> > CP::EffiCollection::ptAcc {*this, "pt"}

Definition at line 132 of file EffiCollection.h.

132{*this, "pt"};

The documentation for this class was generated from the following files: