|
ATLAS Offline Software
|
Go to the documentation of this file.
21 if (axisptr !=
nullptr) {
22 std::string
axis = axisptr->GetTitle();
24 size_t Abs1 =
axis.find(
"|");
26 if (Abs1 != std::string::npos) Abs2 =
axis.find(
"|", Abs1 + 1);
27 bool AbsAxis = (Abs2 != std::string::npos) && (Abs2 != 0);
28 if (
axis.find(
"pt") != std::string::npos ||
axis.find(
"pT") != std::string::npos ||
axis.find(
"p_{T}") != std::string::npos) {
29 return std::make_unique<PtAxisHandler>();
30 }
else if (
axis.find(
"phi") != std::string::npos) {
31 return std::make_unique<PhiAxisHandler>();
32 }
else if (
axis.find(
"q") != std::string::npos ||
axis.find(
"charge") != std::string::npos) {
33 return std::make_unique<ChargeAxisHandler>();
34 }
else if (
axis.find(
"eta") != std::string::npos) {
35 if (AbsAxis)
return std::make_unique<AbsEtaAxisHandler>();
36 return std::make_unique<EtaAxisHandler>();
37 }
else if (
axis.find(
"dRJet") != std::string::npos ||
axis.find(
"#DeltaR (jet, #mu)") != std::string::npos) {
38 return std::make_unique<dRJetAxisHandler>();
41 Error(
"AxisHandlerProvider",
"Can not interpret axis title '%s'",
axis.c_str());
43 Error(
"AxisHandlerProvider",
"nullptr pointer passed");
45 return std::make_unique<UndefinedAxisHandler>();
70 s_close_jet_decor = decor_name;
78 std::string dRJetAxisHandler::s_close_jet_decor =
"dRJet";
79 bool dRJetAxisHandler::s_use_2D_sf =
false;
81 m_acc(s_close_jet_decor),
82 m_use_2D_sf(s_use_2D_sf){}
86 static std::atomic<unsigned int> warned = {0};
92 }
else if(
m_acc.isAvailable(
mu) ) {
96 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"The DFCommonJetDr jet decoration is not available in the derivation will fall back to %s",s_close_jet_decor.c_str());
104 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"The %s decoration has not been found for the Muon. Isolation scale-factors are now also binned in #Delta R(jet,#mu)", s_close_jet_decor.c_str());
105 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"using the closest calibrated AntiKt4EMTopo jet with p_{T}>20~GeV and surving the standard OR criteria.");
106 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"You should decorate your muon appropiately before passing to the tool, and use dRJet = -1 in case there is no jet in an event.");
107 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"For the time being the inclusive scale-factor is going to be returned.");
108 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"In future derivations, muons will also be decorated centrally with DFCommonJetDr, for your benefit.");
109 Warning(
"MuonEfficiencyCorrections::dRJetAxisHandler()",
"You can define custom jet decorations via the 'CloseJetDRDecorator' property of the MuonEfficiencyCorrections tool");
127 if (
this == &
other) {
164 if (
this == &
other) {
177 TAxis* xAx =
GetHist()->GetXaxis();
178 return Form(
"%s_%.2f_to_%.2f", xAx->GetTitle(), xAx->GetBinLowEdge(
bin), xAx->GetBinUpEdge(
bin));
207 return (
GetHist()->GetNbinsX() + 2) * (
GetHist()->GetNbinsY() + 2);
211 int x(-1),
y(-1),
z(-1);
213 return x == 0 ||
x ==
GetHist()->GetXaxis()->GetNbins() + 1 ||
y == 0 ||
y ==
GetHist()->GetYaxis()->GetNbins() + 1;
223 int binx =
GetHist()->GetXaxis()->FindBin(parx);
224 int biny =
GetHist()->GetYaxis()->FindBin(pary);
225 if (binx < 1 || binx >
GetHist()->GetNbinsX() || biny < 1 || biny >
GetHist()->GetNbinsY()) {
233 if (
this == &
other) {
249 int x(0),
y(0),
z(0);
251 TAxis* xAx =
GetHist()->GetXaxis();
252 TAxis* yAx =
GetHist()->GetYaxis();
253 return Form(
"%s_%.2f_to_%.2f_times_%s_%.2f_to_%.2f",
255 xAx->GetTitle(), xAx->GetBinLowEdge(
x), xAx->GetBinUpEdge(
x),
257 yAx->GetTitle(), yAx->GetBinLowEdge(
y), yAx->GetBinUpEdge(
y));
280 if (
this == &
other) {
296 int x(-1),
y(-1),
z(-1);
298 return x == 0 ||
x ==
GetHist()->GetXaxis()->GetNbins() + 1 ||
299 y == 0 ||
y ==
GetHist()->GetYaxis()->GetNbins() + 1 ||
300 z == 0 ||
z ==
GetHist()->GetZaxis()->GetNbins() + 1;
311 int binx =
GetHist()->GetXaxis()->FindBin(parx);
312 int biny =
GetHist()->GetYaxis()->FindBin(pary);
313 int binz =
GetHist()->GetZaxis()->FindBin(parz);
314 if (binx < 1 || binx >
GetHist()->GetNbinsX() || biny < 1 || biny >
GetHist()->GetNbinsY() || binz < 1 || binz >
GetHist()->GetNbinsZ()) {
323 int x(0),
y(0),
z(0);
325 TAxis* xAx =
GetHist()->GetXaxis();
326 TAxis* yAx =
GetHist()->GetYaxis();
327 TAxis* zAx =
GetHist()->GetZaxis();
328 return Form(
"%s_%.2f_to_%.2f_times_%s_%.2f_to_%.2f_times_%s_%.2f_to_%.2f",
330 xAx->GetTitle(), xAx->GetBinLowEdge(
x), xAx->GetBinUpEdge(
x),
332 yAx->GetTitle(), yAx->GetBinLowEdge(
y), yAx->GetBinUpEdge(
y),
334 zAx->GetTitle(), zAx->GetBinLowEdge(
z), zAx->GetBinUpEdge(
z));
358 if (
this == &
other) {
371 return m_h->GetNumberOfBins() + 1;
392 int x(0),
y(0),
z(0);
394 TAxis* xAx =
GetHist()->GetXaxis();
395 TAxis* yAx =
GetHist()->GetYaxis();
396 return Form(
"%s_%.2f_to_%.2f__times_%s_%.2f_to_%.2f",
397 xAx->GetTitle(), xAx->GetBinLowEdge(
x), xAx->GetBinUpEdge(
x),
398 yAx->GetTitle(), yAx->GetBinLowEdge(
y), yAx->GetBinUpEdge(
y));
int nBins() const override
Return the total number of bins in the histogram -> (GetNbins() +2)**n.
void Copy(const HistHandler &other)
CorrectionCode FindBin(const xAOD::Muon &muon, int &bin) const override
Function that changes from Implementation to implementation.
int nBins() const override
Return the total number of bins in the histogram -> (GetNbins() +2)**n.
void SetBinError(int bin, float val)
HistHandler_TH1(TH1 *hist)
bool isOverFlowBin(int b) const override
States whether a bin is overflow or not.
std::string GetBinName(unsigned int bin) const override
Translates the bin number into the borders and return them as name.
std::unique_ptr< AxisHandler > m_x_handler
CorrectionCode FindBin(const xAOD::Muon &muon, int &bin) const override
Function that changes from Implementation to implementation.
bool isOverFlowBin(int b) const override
States whether a bin is overflow or not.
CorrectionCode FindBin(const xAOD::Muon &muon, int &bin) const override
Function that changes from Implementation to implementation.
int nOverFlowBins() const override
Return the number of overflow bins.
virtual ~HistHandler_TH2Poly()
bool isOverFlowBin(int b) const override
States whether a bin is overflow or not.
int nOverFlowBins() const override
Return the number of overflow bins.
HistHandler_TH3(TH1 *hist)
The HistHandler TH3 handles 3D histograms, since TH3 inhertis from TH1,a TH1* object is parsed avoidi...
Helper class to provide constant type-safe access to aux data.
virtual ~HistHandler_TH2()
virtual HistHandler_TH1 & operator=(const HistHandler_TH1 &other)
CorrectionCode GetBinningParameter(const xAOD::Muon &mu, float &value) const override
Select isolated Photons, Electrons and Muons.
std::unique_ptr< AxisHandler > m_y_handler
std::unique_ptr< TH1 > clone(TH1 *H)
Clones a TH1 and handles the ownership then to a unique_ptr.
virtual HistHandler_TH2 & operator=(const HistHandler_TH2 &other)
CorrectionCode GetBinningParameter(const xAOD::Muon &mu, float &value) const override
bool isOverFlowBin(int b) const override
States whether a bin is overflow or not.
int nOverFlowBins() const override
Return the number of overflow bins.
@ OutOfValidityRange
Input object is out of validity range.
@ Error
Some error happened during the object correction.
int nOverFlowBins() const override
Return the number of overflow bins.
std::string GetBinName(unsigned int bin) const override
Translates the bin number into the borders and return them as name.
CorrectionCode GetBinningParameter(const xAOD::Muon &mu, float &value) const override
std::unique_ptr< AxisHandler > m_z_handler
std::unique_ptr< AxisHandler > m_y_handler
void SetBinContent(int bin, float val)
CorrectionCode FindBin(const xAOD::Muon &muon, int &bin) const override
Function that changes from Implementation to implementation.
CorrectionCode GetBinningParameter(const xAOD::Muon &mu, float &value) const override
std::unique_ptr< AxisHandler > m_x_handler
static void set_use_2D_sf(const bool)
std::string GetBinName(unsigned int bin) const override
Translates the bin number into the borders and return them as name.
virtual HistHandler_TH3 & operator=(const HistHandler_TH3 &other)
SG::AuxElement::ConstAccessor< float > m_acc
CorrectionCode GetBinningParameter(const xAOD::Muon &mu, float &value) const override
int nBins() const override
Return the total number of bins in the histogram -> (GetNbins() +2)**n.
int nBins() const override
Return the total number of bins in the histogram -> (GetNbins() +2)**n.
virtual ~HistHandler_TH1()
CorrectionCode GetBinningParameter(const xAOD::Muon &mu, float &value) const override
std::string EraseWhiteSpaces(std::string str)
Removes beginning and trailing white spaces from a string.
std::string GetBinName(unsigned int bin) const override
Translates the bin number into the borders and return them as name.
@ Ok
The correction was done successfully.
std::unique_ptr< AxisHandler > m_x_handler
static void set_close_jet_decorator(const std::string &decor_name)
static std::unique_ptr< AxisHandler > GetAxisHandler(const TAxis *axis)
std::unique_ptr< AxisHandler > m_x_handler
Return value from object correction CP tools.
std::unique_ptr< AxisHandler > m_y_handler
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
HistHandler_TH2Poly(TH2Poly *hist)
The HistHandler_TH2Poly handles the TH2Poly histograms of the scale-factor maps.
CorrectionCode GetBinningParameter(const xAOD::Muon &, float &) const override
virtual HistHandler_TH2Poly & operator=(const HistHandler_TH2Poly &other)
HistHandler_TH2(TH1 *hist)
The HistHandler TH2 handles 2D histograms which are not TH2Poly, since TH2 inhertis from TH1,...
std::unique_ptr< TH1 > m_H
virtual ~HistHandler_TH3()