ATLAS Offline Software
ElectronSelector.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3  */
4 
5 #ifndef IDPERFMON_ELECTRONSELECTOR_H
6 #define IDPERFMON_ELECTRONSELECTOR_H
7 
8 //==============================================================================
9 // Include files...
10 //==============================================================================
12 
13 #include <map>
14 #include "TH1.h"
15 
16 #include "xAODMuon/Muon.h"
17 #include "xAODTracking/Vertex.h"
19 
20 #include "GaudiKernel/ServiceHandle.h"
21 #include "AsgTools/ToolHandle.h"
22 #include "xAODEgamma/Electron.h"
25 
26 #include <atomic>
27 //==============================================================================
28 // Forward class declarations...
29 //==============================================================================
31 {
32  public:
35 
38 
39  void setDebug (bool debug) {m_doDebug = debug;}
40 
44  // Override functions from EventAnalysis
45  void Init();
46  void PrepareElectronList (const xAOD::ElectronContainer* pxElecContainer);
47  bool RecordElectron (const xAOD::Electron *);
48  inline void SetPtCut (float newpt) {m_ptCut = newpt;}
49 
50  protected:
51  // virtual void BookHistograms();
52 
53  private:
55 
56  static std::atomic<unsigned int> s_uNumInstances;
57 
58  // functions
59  void Clear();
60  bool OrderElectronList ();
61  bool RetrieveVertices ();
62 
63  // message stream
64  MsgStream * m_msgStream;
65 
66  // Class variables
68  std::vector<const xAOD::TrackParticle*> m_pxElTrackList;
69  std::vector<const xAOD::TrackParticle*> m_goodElecNegTrackParticleList;
70  std::vector<const xAOD::TrackParticle*> m_goodElecPosTrackParticleList;
71 
72  //
73  bool m_doDebug;
74  //
75  float m_ptCut;
76  float m_etaCut;
77 
78  // Electron likelihood tool:
80 
81  //
82  int m_elecneg1 = 0;
83  int m_elecneg2 = 0;
84  int m_elecpos1 = 0;
85  int m_elecpos2 = 0;
86 
87  // MeV to GeV conversion
88  const float m_CGeV = 1.0e-3; // Conversion factor to remove evil MeV nonsense.
89 
90 };
91 
92 #endif
93 
ElectronSelector::m_etaCut
float m_etaCut
Definition: ElectronSelector.h:76
ElectronSelector::m_pxElTrackList
std::vector< const xAOD::TrackParticle * > m_pxElTrackList
Definition: ElectronSelector.h:68
ElectronSelector::GetElecNegTrackParticle
const xAOD::TrackParticle * GetElecNegTrackParticle(size_t i)
Definition: ElectronSelector.cxx:349
AsgElectronLikelihoodTool.h
ElectronSelector::m_goodElecPosTrackParticleList
std::vector< const xAOD::TrackParticle * > m_goodElecPosTrackParticleList
Definition: ElectronSelector.h:70
EventAnalysis.h
ElectronSelector::GetElecPosTrackParticle
const xAOD::TrackParticle * GetElecPosTrackParticle(size_t i)
Definition: ElectronSelector.cxx:358
Muon.h
ElectronSelector::m_doDebug
bool m_doDebug
Definition: ElectronSelector.h:73
ElectronSelector::s_uNumInstances
static std::atomic< unsigned int > s_uNumInstances
Definition: ElectronSelector.h:56
EventAnalysis
Definition: EventAnalysis.h:32
ElectronSelector::OrderElectronList
bool OrderElectronList()
Definition: ElectronSelector.cxx:216
ElectronSelector::SetPtCut
void SetPtCut(float newpt)
Definition: ElectronSelector.h:48
AsgElectronLikelihoodTool
Electron selector tool to select objects in Athena using an underlying pure ROOT tool.
Definition: AsgElectronLikelihoodTool.h:30
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
ElectronSelector::m_elecpos2
int m_elecpos2
Definition: ElectronSelector.h:85
ElectronSelector::m_msgStream
MsgStream * m_msgStream
Definition: ElectronSelector.h:64
ElectronSelector::m_goodElecNegTrackParticleList
std::vector< const xAOD::TrackParticle * > m_goodElecNegTrackParticleList
Definition: ElectronSelector.h:69
ElectronSelector::operator=
ElectronSelector & operator=(const ElectronSelector &)=delete
ElectronContainer.h
lumiFormat.i
int i
Definition: lumiFormat.py:85
ElectronSelector::RecordElectron
bool RecordElectron(const xAOD::Electron *)
Definition: ElectronSelector.cxx:138
ElectronSelector::PrepareElectronList
void PrepareElectronList(const xAOD::ElectronContainer *pxElecContainer)
Definition: ElectronSelector.cxx:94
ElectronSelector::m_pxElectron
const xAOD::Muon * m_pxElectron
Definition: ElectronSelector.h:67
ElectronSelector::ElectronSelector
ElectronSelector()
Definition: ElectronSelector.cxx:30
ElectronSelector
Definition: ElectronSelector.h:31
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Vertex.h
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
ElectronSelector::m_LHTool2015
AsgElectronLikelihoodTool * m_LHTool2015
Definition: ElectronSelector.h:79
ElectronSelector::GetElectronCollectionSize
unsigned int GetElectronCollectionSize()
Definition: ElectronSelector.h:43
xAOD::Electron_v1
Definition: Electron_v1.h:34
ElectronSelector::m_CGeV
const float m_CGeV
Definition: ElectronSelector.h:88
ElectronSelector::PARENT
EventAnalysis PARENT
Definition: ElectronSelector.h:54
VertexContainer.h
ElectronSelector::RetrieveVertices
bool RetrieveVertices()
Definition: ElectronSelector.cxx:299
ElectronSelector::setDebug
void setDebug(bool debug)
Definition: ElectronSelector.h:39
ElectronSelector::Clear
void Clear()
Definition: ElectronSelector.cxx:200
ElectronSelector::m_elecneg1
int m_elecneg1
Definition: ElectronSelector.h:82
Electron.h
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ToolHandle.h
ElectronSelector::m_ptCut
float m_ptCut
Definition: ElectronSelector.h:75
ElectronSelector::~ElectronSelector
~ElectronSelector()
Definition: ElectronSelector.cxx:46
ElectronSelector::Init
void Init()
Definition: ElectronSelector.cxx:53
ElectronSelector::m_elecpos1
int m_elecpos1
Definition: ElectronSelector.h:84
ElectronSelector::ElectronSelector
ElectronSelector(const ElectronSelector &)=delete
ElectronSelector::m_elecneg2
int m_elecneg2
Definition: ElectronSelector.h:83