ATLAS Offline Software
Loading...
Searching...
No Matches
IsolationConditionHist.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4
5// $Id: IsolationConditionHist.cxx 678002 2015-06-24 15:39:36Z morrisj $
7// #include <xAODPrimitives/tools/getIsolationAccessor.h>
8#include <TF1.h>
9#include <TH3.h>
10
11#include <algorithm>
12#include <cmath>
13
15
16namespace CP {
17 constexpr float MeVtoGeV = 1.e-3;
18 IsolationConditionHist::IsolationConditionHist(const std::string& name, xAOD::Iso::IsolationType isoType, const std::string& isolationFunction,
19 std::unique_ptr<TH3F> efficiencyHisto3D) :
20 IsolationCondition(name, isoType),
21 m_efficiencyHisto3D(std::move(efficiencyHisto3D)),
22 m_isolationFunction (std::make_unique<TF1>(isolationFunction.c_str(), isolationFunction.c_str(), 0.0, 1000.0))
23 {
25 std::string xtitle(m_efficiencyHisto3D->GetXaxis()->GetTitle());
26 m_ptGeV = (xtitle.find("GeV") != std::string::npos);
27 }
29 const float cutValue = getCutValue(x.pt(), x.eta());
30 return accessor()(x) <= cutValue * x.pt();
31 }
32
34 const float cutValue = getCutValue(x.pt, x.eta);
35 return x.isolationValues[type()] <= cutValue * x.pt;
36 }
37
38 float IsolationConditionHist::getCutValue(const float pt, const float eta) const {
39 float xpt = pt * MeVtoGeV; // convert to GeV
40 if (!m_interp)
41 return m_efficiencyHisto3D->GetBinContent(m_efficiencyHisto3D->GetXaxis()->FindBin((m_ptGeV ? xpt : pt)),
42 m_efficiencyHisto3D->GetYaxis()->FindBin(eta),
43 std::min(int(m_isolationFunction->Eval(xpt)), 99));
44 return m_interp->Interpol3d(m_ptGeV ? xpt : pt, eta, std::min(m_isolationFunction->Eval(xpt), 99.), m_efficiencyHisto3D);
45 }
46} // namespace CP
Scalar eta() const
pseudorapidity method
#define x
std::shared_ptr< TH3F > m_efficiencyHisto3D
float getCutValue(const float pt, const float eta) const
bool accept(const xAOD::IParticle &x) const override
std::unique_ptr< TF1 > m_isolationFunction
std::shared_ptr< Interp3D > m_interp
IsolationConditionHist(const std::string &name, xAOD::Iso::IsolationType isoType, const std::string &isolationFunction, std::unique_ptr< TH3F > efficiencyHisto3D)
IsolationCondition(const std::string &name, xAOD::Iso::IsolationType isoType, const std::string &isoDecSuffix="")
const std::string & name() const
xAOD::Iso::IsolationType type(unsigned int n=0) const
const FloatAccessor & accessor(unsigned int n=0) const
Class providing the definition of the 4-vector interface.
Select isolated Photons, Electrons and Muons.
constexpr float MeVtoGeV
STL namespace.
IsolationType
Overall enumeration for isolation types in xAOD files.
setRcore setEtHad setFside pt