ATLAS Offline Software
RatesHistoBase.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include "GaudiKernel/ITHistSvc.h"
9 
10 RatesHistoBase::RatesHistoBase(const std::string& name, IMessageSvc* msgSvc, const bool doHistograms) :
12  m_name(name),
13  m_doHistograms(doHistograms), m_rateVsMu(nullptr), m_rateVsTrain(nullptr), m_data(nullptr),
14  m_rateVsMuCachedPtr(nullptr), m_rateVsTrainCachedPtr(nullptr), m_dataCachedPtr(nullptr)
15 {
16  if (doHistograms) {
17  m_rateVsMu = std::make_unique<TH1D>("",TString(name + ";#mu;Rate / Unit #mu [Hz]"),226,-.5,225.5);
18  m_rateVsMu->Sumw2(true);
19  m_rateVsMu->SetName("rateVsMu");
21 
22  m_rateVsTrain = std::make_unique<TH1D>("",TString(name + ";Distance Into Train;Rate / BCID [Hz]"),100,-0.5,99.5);
23  m_rateVsTrain->Sumw2(true);
24  m_rateVsTrain->SetName("rateVsTrain");
26 
27  m_data = std::make_unique<TH1D>("",TString(";Variable;Raw Data"), RatesBinIdentifier_t::kNRATES_BINS, -.5, RatesBinIdentifier_t::kNRATES_BINS - .5);
28  m_data->Sumw2(true);
29  m_data->SetName("data");
30  // Set bin labels based on RatesBinIdentifier_t
31  m_data->GetXaxis()->SetBinLabel(1, "Actve Raw");
32  m_data->GetXaxis()->SetBinLabel(2, "Active Weighted");
33  m_data->GetXaxis()->SetBinLabel(3, "Pass Raw");
34  m_data->GetXaxis()->SetBinLabel(4, "Pass Weighted OR");
35  m_data->GetXaxis()->SetBinLabel(5, "Pass Weighted AND");
36  m_data->GetXaxis()->SetBinLabel(6, "Express");
37  m_data->GetXaxis()->SetBinLabel(7, "Unique");
38  m_dataCachedPtr = m_data.get();
39 
40  }
41 }
42 
43 
45 }
46 
48  if (!m_rateVsMu.get()) {
49  ATH_MSG_ERROR("RatesHistoBase::giveMuHist Warning requested histograms when histograming is OFF here.");
50  return StatusCode::FAILURE;
51  }
52  ATH_CHECK( svc->regHist(name, std::move(m_rateVsMu), m_rateVsMuCachedPtr) );
53  ATH_MSG_DEBUG("For " << m_name << "(" << this << ") m_rateVsMuCachedPtr is updated to " << (uint64_t) m_rateVsMuCachedPtr);
54  return StatusCode::SUCCESS;
55 }
56 
57 
59  if (!m_rateVsTrain.get()) {
60  ATH_MSG_ERROR("RatesHistoBase::giveTrainHist Warning requested histograms when histograming is OFF here.");
61  return StatusCode::FAILURE;
62  }
63  ATH_CHECK( svc->regHist(name, std::move(m_rateVsTrain), m_rateVsTrainCachedPtr) );
64  return StatusCode::SUCCESS;
65 }
66 
67 
69  if (!m_data.get()) {
70  ATH_MSG_ERROR("RatesHistoBase::giveDataHist Warning requested histograms when histograming is OFF here.");
71  return StatusCode::FAILURE;
72  }
73  ATH_CHECK( svc->regHist(name, std::move(m_data), m_dataCachedPtr) );
74  return StatusCode::SUCCESS;
75 }
76 
77 
79  m_rateVsTrain.reset();
80  m_rateVsTrainCachedPtr = nullptr;
81 }
82 
83 
85  return m_dataCachedPtr; // Caller must be able to deal with nullptr (e.g unique rates groups calling on their trigger)
86 }
87 
88 
90  static const std::vector<std::string> values{"LINEAR_L","LINEAR_BUNCH_EXPO_MU","LINEAR_BUNCHES","LINEAR_MU","NONE"};
91  return values.at(static_cast<size_t>(strat));
92 }
93 
94 
96  switch (strat) {
97  case kLINEAR: return weights.m_linearLumiFactor;
98  case kEXPO_MU: return weights.m_expoMuFactor;
99  case kBUNCH_SCALING: return weights.m_bunchFactor;
100  case kMU_SCALING: return weights.m_muFactor;
101  case kNONE: return weights.m_noScaling;
102  default: ATH_MSG_ERROR("Error in getExtrapolationFactor. Unknown ExtrapStrat_t ENUM supplied " << strat);
103  }
104  return 0.;
105 }
RatesHistoBase::m_dataCachedPtr
TH1 * m_dataCachedPtr
Cached, non-owning pointer.
Definition: RatesHistoBase.h:115
AthCheckMacros.h
RatesHistoBase::clearTrainHist
void clearTrainHist()
In some jobs we don't want to do the rates vs.
Definition: RatesHistoBase.cxx:78
WeightingValuesSummary_t
Structure to hold per-event weights for distribution.
Definition: RatesHistoBase.h:55
m_data
std::vector< T > m_data
Definition: TrackTruthMatchingBaseAlg.cxx:660
WeightingValuesSummary_t::m_linearLumiFactor
double m_linearLumiFactor
What weight needs to be applied to extrapolate rates linear in mu and bunches.
Definition: RatesHistoBase.h:66
kMU_SCALING
@ kMU_SCALING
Scale trigger linearly but only in the change in <mu>
Definition: RatesHistoBase.h:34
RatesHistoBase::giveTrainHist
StatusCode giveTrainHist(const ServiceHandle< ITHistSvc > &svc, const std::string &name)
Definition: RatesHistoBase.cxx:58
ExtrapStrat_t
ExtrapStrat_t
Extrapolation strategy to apply to each emulated trigger.
Definition: RatesHistoBase.h:30
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
kLINEAR
@ kLINEAR
Scale trigger linearly with luminosity.
Definition: RatesHistoBase.h:31
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
RatesHistoBase::getDataHist
TH1 * getDataHist()
Definition: RatesHistoBase.cxx:84
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
RatesHistoBase::~RatesHistoBase
virtual ~RatesHistoBase()
Definition: RatesHistoBase.cxx:44
RatesHistoBase::getExtrapolationFactor
double getExtrapolationFactor(const WeightingValuesSummary_t &weights, const ExtrapStrat_t strat) const
Definition: RatesHistoBase.cxx:95
RatesHistoBase::m_data
std::unique_ptr< TH1 > m_data
Histogram of raw rates quantites, for when we need to normalise offline (e.g.
Definition: RatesHistoBase.h:112
kEXPO_MU
@ kEXPO_MU
Scale trigger linearly in bunches and exponentially in mu.
Definition: RatesHistoBase.h:32
RatesHistoBase::m_rateVsMu
std::unique_ptr< TH1 > m_rateVsMu
Histogram of rate as a fn.
Definition: RatesHistoBase.h:110
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
RatesHistoBase::m_rateVsTrain
std::unique_ptr< TH1 > m_rateVsTrain
Histogram of rate as a fn.
Definition: RatesHistoBase.h:111
RatesHistoBase.h
kBUNCH_SCALING
@ kBUNCH_SCALING
Scale trigger linearly but only in the number of bunches.
Definition: RatesHistoBase.h:33
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
WeightingValuesSummary_t::m_expoMuFactor
double m_expoMuFactor
What weight needs to be applied to extrapolate rates linear in bunches and exponential in mu.
Definition: RatesHistoBase.h:67
RatesHistoBase::giveMuHist
StatusCode giveMuHist(const ServiceHandle< ITHistSvc > &svc, const std::string &name)
Definition: RatesHistoBase.cxx:47
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
RatesHistoBase::m_rateVsTrainCachedPtr
TH1 * m_rateVsTrainCachedPtr
Cached, non-owning pointer.
Definition: RatesHistoBase.h:114
RatesHistoBase::RatesHistoBase
RatesHistoBase(const std::string &name, IMessageSvc *msgSvc, const bool doHistograms=true)
Definition: RatesHistoBase.cxx:10
RatesHistoBase::m_rateVsMuCachedPtr
TH1 * m_rateVsMuCachedPtr
Cached, non-owning pointer.
Definition: RatesHistoBase.h:113
WeightingValuesSummary_t::m_bunchFactor
double m_bunchFactor
What weight needs to be applied to extrapolate rates linear in number of bunches.
Definition: RatesHistoBase.h:64
RatesHistoBase::m_name
std::string m_name
My name.
Definition: RatesHistoBase.h:108
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
RatesHistoBase::giveDataHist
StatusCode giveDataHist(const ServiceHandle< ITHistSvc > &svc, const std::string &name)
Definition: RatesHistoBase.cxx:68
RatesHistoBase::doHistograms
bool doHistograms() const
If histogramming was enabled in this rates object.
Definition: RatesHistoBase.h:99
kNRATES_BINS
@ kNRATES_BINS
Must always come last.
Definition: RatesHistoBase.h:49
TH1
Definition: rootspy.cxx:268
WeightingValuesSummary_t::m_muFactor
double m_muFactor
What weight needs to be applied to extrapolate rates linear in mu.
Definition: RatesHistoBase.h:65
ServiceHandle< ITHistSvc >
RatesHistoBase::getExtrapolationFactorString
const std::string & getExtrapolationFactorString(ExtrapStrat_t strat) const
Definition: RatesHistoBase.cxx:89
kNONE
@ kNONE
Do not scale this trigger for changes in luminosity.
Definition: RatesHistoBase.h:35
WeightingValuesSummary_t::m_noScaling
const double m_noScaling
Weight for no scaling.
Definition: RatesHistoBase.h:68