ATLAS Offline Software
DiLepFilters.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 // DiLepFilters.h, (c) ATLAS Detector software
8 // Author: Dominik Krauss (krauss@mpp.mpg.de)
9 
10 #ifndef DERIVATIONFRAMEWORK_DILEPFILTERS_H
11 #define DERIVATIONFRAMEWORK_DILEPFILTERS_H 1
12 
13 // STL
14 #include <string>
15 #include <vector>
16 
17 // Athena
19 #include "GaudiKernel/ToolHandle.h"
22 #include "xAODEgamma/Electron.h"
23 #include "xAODEgamma/Photon.h"
24 #include "xAODMuon/Muon.h"
25 
26 namespace DerivationFramework
27 {
28  class DiLepFilters : public AthAlgTool, virtual public IDiLepFilters
29  {
30  public:
31  DiLepFilters(const std::string& t, const std::string& n, const IInterface* p);
32  virtual ~DiLepFilters() = default;
33 
34  virtual StatusCode initialize() override;
35 
36  // retrieves the trigger information
37  // has to be called in every event before the filters are used
38  // returns true if at least one trigger is passed
39  bool GetTriggers(uint32_t& passFlags) const override;
40 
41  // single filter implementations
42  bool PassSiEl(const uint32_t passFlags,
43  const xAOD::Electron& el) const override;
44  bool PassSiPhX(const uint32_t passFlags,
45  const xAOD::Photon& ph,
46  const xAOD::Electron& el) const override;
47  bool PassSiPhX(const uint32_t passFlags,
48  const xAOD::Photon& ph1,
49  const xAOD::Photon& ph2) const override;
50  bool PassSiPhX(const uint32_t passFlags,
51  const xAOD::Photon& ph,
52  const xAOD::Muon& mu) const override;
53  bool PassSiMu(const uint32_t passFlags,
54  const xAOD::Muon& mu) const override;
55  bool PassSiMuBa(const uint32_t passFlags,
56  const xAOD::Muon& mu) const override;
57 
58  // di filter implementations
59  bool PassDiEl(const uint32_t passFlags,
60  const xAOD::Electron& el1,
61  const xAOD::Electron& el2) const override;
62  bool PassDiPh(const uint32_t passFlags,
63  const xAOD::Photon& ph1,
64  const xAOD::Photon& ph2) const override;
65  bool PassDiElPh(const uint32_t passFlags,
66  const xAOD::Electron& el,
67  const xAOD::Photon& ph) const override;
68  bool PassDiLoElPh(const uint32_t passFlags,
69  const xAOD::Electron& el,
70  const xAOD::Photon& ph) const override;
71 
72  private:
73  enum PassFlags {
74  PASS_SIPH = 1,
75  PASS_DIPH = 2,
76  PASS_SIMU = 4,
77  PASS_SIMUBA = 8
78  };
79 
80  ToolHandle<Trig::TrigDecisionTool> m_tdt;
81 
82  // trigger names
83  std::vector<std::string> m_trig_siph;
84  std::vector<std::string> m_trig_diph;
85  std::vector<std::string> m_trig_simu;
86  std::vector<std::string> m_trig_simuba;
87 
88  // cut values of the filters
89  double m_el_eta;
90  double m_ph_eta;
91  double m_mu_eta;
92  double m_mu_beta;
93 
94  double m_el_d0;
95  double m_mu_d0;
96 
97  double m_siel_pt;
98  double m_siph_pt;
99  double m_siph_xpt;
100  double m_simu_pt;
101  double m_simuba_pt;
102  double m_diel_pt;
103  double m_diph_pt;
104  double m_dielph_pt;
106 
107  static constexpr double m_GeVtoMeV = 1000.;
108 
109  // small helper functions
110  inline bool PassEta(const xAOD::IParticle& part, double eta_cut) const;
111  inline bool Passd0(const xAOD::Electron& el, double d0_cut) const;
112  inline bool Passd0(const xAOD::Muon& mu, double d0_cut) const;
113  inline bool IsLoose(const xAOD::Egamma& eg) const;
114  inline bool SameCluster(const xAOD::Egamma& eg1, const xAOD::Egamma& eg2) const;
115  inline bool IsGood(const xAOD::Muon& mu) const;
116 
117  inline bool PassCuts(const xAOD::Electron& el, double pt_cut, bool loose = false) const;
118  inline bool PassCuts(const xAOD::Photon& ph, double pt_cut) const;
119  inline bool PassCuts(const xAOD::Muon& mu, double pt_cut, double eta_cut) const;
120  };
121 }
122 
123 #endif
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
DerivationFramework::DiLepFilters::PassDiPh
bool PassDiPh(const uint32_t passFlags, const xAOD::Photon &ph1, const xAOD::Photon &ph2) const override
Definition: DiLepFilters.cxx:179
DerivationFramework::DiLepFilters::Passd0
bool Passd0(const xAOD::Electron &el, double d0_cut) const
Definition: DiLepFilters.cxx:226
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
DerivationFramework::DiLepFilters::PASS_SIPH
@ PASS_SIPH
Definition: DiLepFilters.h:74
DerivationFramework::DiLepFilters::initialize
virtual StatusCode initialize() override
Definition: DiLepFilters.cxx:52
DerivationFramework::DiLepFilters::PassDiElPh
bool PassDiElPh(const uint32_t passFlags, const xAOD::Electron &el, const xAOD::Photon &ph) const override
Definition: DiLepFilters.cxx:193
DerivationFramework::DiLepFilters::m_ph_eta
double m_ph_eta
Definition: DiLepFilters.h:90
ParticleTest.eg
eg
Definition: ParticleTest.py:29
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
DerivationFramework::DiLepFilters::m_trig_simu
std::vector< std::string > m_trig_simu
Definition: DiLepFilters.h:85
Muon.h
DerivationFramework::DiLepFilters::GetTriggers
bool GetTriggers(uint32_t &passFlags) const override
Definition: DiLepFilters.cxx:61
DerivationFramework::DiLepFilters::IsLoose
bool IsLoose(const xAOD::Egamma &eg) const
Definition: DiLepFilters.cxx:250
DerivationFramework::DiLepFilters::PASS_SIMUBA
@ PASS_SIMUBA
Definition: DiLepFilters.h:77
DerivationFramework::DiLepFilters::m_simuba_pt
double m_simuba_pt
Definition: DiLepFilters.h:101
DerivationFramework::DiLepFilters::SameCluster
bool SameCluster(const xAOD::Egamma &eg1, const xAOD::Egamma &eg2) const
Definition: DiLepFilters.cxx:257
DerivationFramework::DiLepFilters::m_dielph_pt
double m_dielph_pt
Definition: DiLepFilters.h:104
TrigDecisionTool.h
DerivationFramework::DiLepFilters::~DiLepFilters
virtual ~DiLepFilters()=default
xAOD::Egamma_v1
Definition: Egamma_v1.h:56
DerivationFramework::DiLepFilters::m_siph_xpt
double m_siph_xpt
Definition: DiLepFilters.h:99
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
DerivationFramework::DiLepFilters::m_tdt
ToolHandle< Trig::TrigDecisionTool > m_tdt
Definition: DiLepFilters.h:80
DerivationFramework::DiLepFilters::PASS_DIPH
@ PASS_DIPH
Definition: DiLepFilters.h:75
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
DerivationFramework::DiLepFilters::m_mu_eta
double m_mu_eta
Definition: DiLepFilters.h:91
DerivationFramework::DiLepFilters::PassFlags
PassFlags
Definition: DiLepFilters.h:73
DerivationFramework::DiLepFilters::PassSiEl
bool PassSiEl(const uint32_t passFlags, const xAOD::Electron &el) const override
Definition: DiLepFilters.cxx:101
DerivationFramework::DiLepFilters::PassSiMuBa
bool PassSiMuBa(const uint32_t passFlags, const xAOD::Muon &mu) const override
Definition: DiLepFilters.cxx:157
DerivationFramework::DiLepFilters::m_el_d0
double m_el_d0
Definition: DiLepFilters.h:94
beamspotman.n
n
Definition: beamspotman.py:731
Photon.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
DerivationFramework::DiLepFilters::PassSiPhX
bool PassSiPhX(const uint32_t passFlags, const xAOD::Photon &ph, const xAOD::Electron &el) const override
Definition: DiLepFilters.cxx:109
AthAlgTool.h
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
DerivationFramework::DiLepFilters::PASS_SIMU
@ PASS_SIMU
Definition: DiLepFilters.h:76
DerivationFramework::DiLepFilters::PassDiLoElPh
bool PassDiLoElPh(const uint32_t passFlags, const xAOD::Electron &el, const xAOD::Photon &ph) const override
Definition: DiLepFilters.cxx:207
DerivationFramework
THE reconstruction tool.
Definition: ParticleSortingAlg.h:24
DerivationFramework::DiLepFilters::m_trig_simuba
std::vector< std::string > m_trig_simuba
Definition: DiLepFilters.h:86
DerivationFramework::DiLepFilters::m_trig_siph
std::vector< std::string > m_trig_siph
Definition: DiLepFilters.h:83
DerivationFramework::DiLepFilters::m_siph_pt
double m_siph_pt
Definition: DiLepFilters.h:98
DerivationFramework::DiLepFilters::m_simu_pt
double m_simu_pt
Definition: DiLepFilters.h:100
DerivationFramework::DiLepFilters::m_mu_beta
double m_mu_beta
Definition: DiLepFilters.h:92
DerivationFramework::IDiLepFilters
Definition: IDiLepFilters.h:25
DerivationFramework::DiLepFilters::m_siel_pt
double m_siel_pt
Definition: DiLepFilters.h:97
DerivationFramework::DiLepFilters::m_trig_diph
std::vector< std::string > m_trig_diph
Definition: DiLepFilters.h:84
DerivationFramework::DiLepFilters::PassCuts
bool PassCuts(const xAOD::Electron &el, double pt_cut, bool loose=false) const
Definition: DiLepFilters.cxx:284
DerivationFramework::DiLepFilters
Definition: DiLepFilters.h:29
DerivationFramework::DiLepFilters::PassSiMu
bool PassSiMu(const uint32_t passFlags, const xAOD::Muon &mu) const override
Definition: DiLepFilters.cxx:149
xAOD::Electron_v1
Definition: Electron_v1.h:34
DerivationFramework::DiLepFilters::PassDiEl
bool PassDiEl(const uint32_t passFlags, const xAOD::Electron &el1, const xAOD::Electron &el2) const override
Definition: DiLepFilters.cxx:165
DerivationFramework::DiLepFilters::IsGood
bool IsGood(const xAOD::Muon &mu) const
Definition: DiLepFilters.cxx:270
DerivationFramework::DiLepFilters::m_mu_d0
double m_mu_d0
Definition: DiLepFilters.h:95
DerivationFramework::DiLepFilters::m_GeVtoMeV
static constexpr double m_GeVtoMeV
Definition: DiLepFilters.h:107
DerivationFramework::DiLepFilters::PassEta
bool PassEta(const xAOD::IParticle &part, double eta_cut) const
Definition: DiLepFilters.cxx:221
xAOD::Photon_v1
Definition: Photon_v1.h:37
DerivationFramework::DiLepFilters::DiLepFilters
DiLepFilters(const std::string &t, const std::string &n, const IInterface *p)
Definition: DiLepFilters.cxx:17
DerivationFramework::DiLepFilters::m_diel_pt
double m_diel_pt
Definition: DiLepFilters.h:102
Electron.h
AthAlgTool
Definition: AthAlgTool.h:26
IDiLepFilters.h
DerivationFramework::DiLepFilters::m_diph_pt
double m_diph_pt
Definition: DiLepFilters.h:103
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
DerivationFramework::DiLepFilters::m_diloelph_pt
double m_diloelph_pt
Definition: DiLepFilters.h:105
DerivationFramework::DiLepFilters::m_el_eta
double m_el_eta
Definition: DiLepFilters.h:89