ATLAS Offline Software
ElectronMuonTopoInfo.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 /**************************************************************************
6  **
7  ** File: Trigger/TrigEvent/TrigTopoEvent/ElectronMuonTopoInfo.h
8  **
9  ** Description: -Class for description of combined electron-muon object for
10  ** algorithms in TrigEgammaMuonCombHypo package
11  **
12  ** Author: Pavel Jez <pavel.jez@cern.ch>
13  **
14  ** Created: Apr 9, 2011
15  **
16  **
17  **************************************************************************/
18 
19 #ifndef _ELECTRONMUONTOPOINFO_H_
20 #define _ELECTRONMUONTOPOINFO_H_
21 
22 // standard stuff
23 #include <string>
24 #include <map>
25 #include <cmath>
26 // general athena stuff
27 #include "GaudiKernel/MsgStream.h"
28 
30 #include "TrigParticle/TrigTau.h"
33 
35 #include "tauEvent/TauJet.h"
39 #include "tauEvent/TauPID.h"
40 
41 
42 
52 
53  public:
55  ElectronMuonTopoInfo(int roiWord, float deltaPhi=-1., float deltaR = -1., float invMass = -1., bool el_valid = false, bool oppositeCharge = 0, unsigned short vertexState =0);
56 
58 
59 
62  int RoiWord() const { return m_roiWord; }
63  float DeltaPhi() const { return m_DeltaPhi; }
64  float DeltaR() const { return m_DeltaR; }
65  float InvMass() const { return m_InvMass; }
66  bool ElecValid() const{ return m_electronValid; }
67  bool OppositeCharge() const { return m_oppositeCharge; }
68  unsigned short VertexState() const { return m_vertexState;}
69 
70 
72  void SetRoiWord(int RoiWord);
73  void SetDeltaPhi(float DeltaPhi);
74  void SetDeltaR(float DeltaR);
75  void SetInvMass(float InvMass);
76  void SetElecValid(bool ElecValid);
78  void SetVertexState(unsigned short vextexState);
79 
85  Vertex commonVertex(const TrigElectron* electron1, const CombinedMuonFeature* muon1);
86  bool opositeCharge(const TrigElectron* electron1, const CombinedMuonFeature* muon1);
87 
88  double invariantMass(const TrigElectron* electron1, const CombinedMuonFeature* muon1);
89  double deltaPhi(const TrigElectron* electron1, const CombinedMuonFeature* muon1);
90  double deltaR(const TrigElectron* electron1, const CombinedMuonFeature* muon1);
91 
92  //overloading for L2 tau tau combinations
93  double invariantMass(const TrigTau* tau1, const TrigTau* tau2);
94  double deltaPhi(const TrigTau* tau1, const TrigTau* tau2);
95  double deltaR(const TrigTau* tau1, const TrigTau* tau2);
96  //overloading for L2 tau e combinations
97  double invariantMass(const TrigTau* tau1, const TrigElectron* electron1);
98  double deltaPhi(const TrigTau* tau1, const TrigElectron* electron1);
99  double deltaR(const TrigTau* tau1, const TrigElectron* electron1);
100  //overloading for L2 tau mu combinations
101  double invariantMass(const TrigTau* tau1, const CombinedMuonFeature* muon1);
102  double deltaPhi(const TrigTau* tau1, const CombinedMuonFeature* muon1);
103  double deltaR(const TrigTau* tau1, const CombinedMuonFeature* muon1);
104 
105 
106  // overloading for EF
107  Vertex commonVertex(const Trk::Perigee* perigeeEL, const Trk::Perigee* perigeeMU, double& pull, bool debug = false);
108 
109  bool opositeCharge(const egamma* electron1, const Trk::Perigee* muon1);
110  double invariantMass(const egamma* electron1, const Trk::Perigee* muon1);
111  double deltaR(const egamma* electron1, const Trk::Perigee* muon1);
112  double deltaPhi(const egamma* electron1, const Trk::Perigee* muon1);
113 
114  double invariantMass(double Pt1, double eta1, double phi1, double m1,
115  double Pt2, double eta2, double phi2, double m2) const ;
116 
117  // overloading for EF tau tau combinations
118  double deltaR(const Analysis::TauJet* tau1, const Analysis::TauJet* tau2);
119  double deltaPhi(const Analysis::TauJet* tau1, const Analysis::TauJet* tau2);
120  double invariantMass(const Analysis::TauJet* tau1, const Analysis::TauJet* tau2);
121  // overloading for EF tau e combinations
122  double deltaR(const Analysis::TauJet* tau1, const egamma* electron1);
123  double deltaPhi(const Analysis::TauJet* tau1, const egamma* electron1);
124  double invariantMass(const Analysis::TauJet* tau1, const egamma* electron1);
125  // overloading for EF tau mu combinations
126  double deltaR(const Analysis::TauJet* tau1, const Trk::Perigee* muon1);
127  double deltaPhi(const Analysis::TauJet* tau1, const Trk::Perigee* muon1);
128  double invariantMass(const Analysis::TauJet* tau1, const Trk::Perigee* muon1);
129 
130 
131  private:
135  float m_DeltaPhi;
137  float m_DeltaR;
139  float m_InvMass;
145  unsigned short m_vertexState;
146 
147 };
148 
150 std::string str( const ElectronMuonTopoInfo& d );
151 
152 MsgStream& operator<< ( MsgStream& m, const ElectronMuonTopoInfo& d );
153 
154 // comparison operators
157  return !( d1 == d2 );
158  }
159 
160 
161 CLASS_DEF( ElectronMuonTopoInfo , 129722551 , 1 )
162 
163 
164 #endif //ELECTRONMUONTOPOINFO_H_
165 
ElectronMuonTopoInfo::SetOppositeCharge
void SetOppositeCharge(bool OppositeCharge)
Definition: ElectronMuonTopoInfo.cxx:59
ElectronMuonTopoInfo::~ElectronMuonTopoInfo
~ElectronMuonTopoInfo()
Definition: ElectronMuonTopoInfo.cxx:50
python.SystemOfUnits.m2
int m2
Definition: SystemOfUnits.py:92
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
ParticleGun_SamplingFraction.eta2
eta2
Definition: ParticleGun_SamplingFraction.py:96
P4Helpers::invMass
double invMass(const I4Momentum &pA, const I4Momentum &pB)
invariant mass from two I4momentum references
Definition: P4Helpers.h:239
TrigElectron.h
hist_file_dump.d
d
Definition: hist_file_dump.py:137
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
ElectronMuonTopoInfo::InvMass
float InvMass() const
Definition: ElectronMuonTopoInfo.h:65
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
xAOD::eta1
setEt setPhi setE277 setWeta2 eta1
Definition: TrigEMCluster_v1.cxx:41
ElectronMuonTopoInfo
ElectronMuonTopoInfo is a class for storing information about combuned electron-muon object....
Definition: ElectronMuonTopoInfo.h:51
ElectronMuonTopoInfo::SetVertexState
void SetVertexState(unsigned short vextexState)
Definition: ElectronMuonTopoInfo.cxx:60
TrigElectron
File: TrigElectron.h.
Definition: Trigger/TrigEvent/TrigParticle/TrigParticle/TrigElectron.h:63
ElectronMuonTopoInfo::SetInvMass
void SetInvMass(float InvMass)
Definition: ElectronMuonTopoInfo.cxx:57
ElectronMuonTopoInfo::deltaR
double deltaR(const TrigElectron *electron1, const CombinedMuonFeature *muon1)
Delta R @ L2.
Definition: ElectronMuonTopoInfo.cxx:254
ElectronMuonTopoInfo::SetDeltaPhi
void SetDeltaPhi(float DeltaPhi)
Definition: ElectronMuonTopoInfo.cxx:55
ElectronMuonTopoInfo::invariantMass
double invariantMass(const TrigElectron *electron1, const CombinedMuonFeature *muon1)
Invariant mass calculation @ L2.
Definition: ElectronMuonTopoInfo.cxx:403
ElectronMuonTopoInfo::m_DeltaR
float m_DeltaR
Delta R between electron and muon.
Definition: ElectronMuonTopoInfo.h:137
ElectronMuonTopoInfo::deltaPhi
double deltaPhi(const TrigElectron *electron1, const CombinedMuonFeature *muon1)
Delta phi @ L2.
Definition: ElectronMuonTopoInfo.cxx:207
egamma
Definition: egamma.h:58
CombinedMuonFeature.h
ElectronMuonTopoInfo::ElectronMuonTopoInfo
ElectronMuonTopoInfo()
Definition: ElectronMuonTopoInfo.cxx:28
xAOD::roiWord
roiWord
Definition: TrigMissingET_v1.cxx:36
ElectronMuonTopoInfo::opositeCharge
bool opositeCharge(const TrigElectron *electron1, const CombinedMuonFeature *muon1)
Opposite charge @ L2.
Definition: ElectronMuonTopoInfo.cxx:192
ElectronMuonTopoInfo::VertexState
unsigned short VertexState() const
Definition: ElectronMuonTopoInfo.h:68
ElectronMuonTopoInfo::m_InvMass
float m_InvMass
Invariant mass of electron and muon.
Definition: ElectronMuonTopoInfo.h:139
python.changerun.m1
m1
Definition: changerun.py:32
TauCommonExtraDetails.h
ElectronMuonTopoInfo::Vertex
Vertex
other methods
Definition: ElectronMuonTopoInfo.h:84
ElectronMuonTopoInfo::m_electronValid
bool m_electronValid
boolean flag showing the validity of electron
Definition: ElectronMuonTopoInfo.h:141
ElectronMuonTopoInfo::Common
@ Common
Definition: ElectronMuonTopoInfo.h:84
Analysis::TauJet
Object for taus common for ESD and AOD.
Definition: Reconstruction/tauEvent/tauEvent/TauJet.h:61
ElectronMuonTopoInfo::Unapplicable
@ Unapplicable
Definition: ElectronMuonTopoInfo.h:84
operator!=
bool operator!=(const ElectronMuonTopoInfo &d1, const ElectronMuonTopoInfo &d2)
Definition: ElectronMuonTopoInfo.h:156
ElectronMuonTopoInfo::OppositeCharge
bool OppositeCharge() const
Definition: ElectronMuonTopoInfo.h:67
ElectronMuonTopoInfo::ElecValid
bool ElecValid() const
Definition: ElectronMuonTopoInfo.h:66
python.StandardJetMods.pull
pull
Definition: StandardJetMods.py:264
TauJetContainer.h
ElectronMuonTopoInfo::m_vertexState
unsigned short m_vertexState
3 bit description of vertex: 0=common, 1=not common, 3= not applicable
Definition: ElectronMuonTopoInfo.h:145
operator<<
MsgStream & operator<<(MsgStream &m, const ElectronMuonTopoInfo &d)
Definition: ElectronMuonTopoInfo.cxx:77
ElectronMuonTopoInfo::SetElecValid
void SetElecValid(bool ElecValid)
Definition: ElectronMuonTopoInfo.cxx:58
CombinedMuonFeature
Definition: CombinedMuonFeature.h:30
ElectronMuonTopoInfo::m_oppositeCharge
bool m_oppositeCharge
True if electron and muon have opposite charged.
Definition: ElectronMuonTopoInfo.h:143
TauPID.h
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
ElectronMuonTopoInfo::m_roiWord
int m_roiWord
Identifier of the RoI.
Definition: ElectronMuonTopoInfo.h:133
TauCommonDetails.h
TrigTau.h
TauDetailsContainer.h
str
std::string str(const ElectronMuonTopoInfo &d)
Helper function for printing the object.
Definition: ElectronMuonTopoInfo.cxx:63
ElectronMuonTopoInfo::SetDeltaR
void SetDeltaR(float DeltaR)
Definition: ElectronMuonTopoInfo.cxx:56
ElectronMuonTopoInfo::RoiWord
int RoiWord() const
accessor methods
Definition: ElectronMuonTopoInfo.h:62
ElectronMuonTopoInfo::commonVertex
Vertex commonVertex(const TrigElectron *electron1, const CombinedMuonFeature *muon1)
checking Vertex compatibility @ L2
Definition: ElectronMuonTopoInfo.cxx:90
ElectronMuonTopoInfo::DeltaR
float DeltaR() const
Definition: ElectronMuonTopoInfo.h:64
CLASS_DEF
#define CLASS_DEF(NAME, CID, VERSION)
associate a clid and a version to a type eg
Definition: Control/AthenaKernel/AthenaKernel/CLASS_DEF.h:64
dq_defect_virtual_defect_validation.d2
d2
Definition: dq_defect_virtual_defect_validation.py:81
TrigTau
File: TrigTau.h.
Definition: TrigTau.h:37
ElectronMuonTopoInfo::NotCommon
@ NotCommon
Definition: ElectronMuonTopoInfo.h:84
ElectronMuonTopoInfo::SetRoiWord
void SetRoiWord(int RoiWord)
set methods
Definition: ElectronMuonTopoInfo.cxx:54
ElectronMuonTopoInfo::m_DeltaPhi
float m_DeltaPhi
Delta Phi between electron and muon.
Definition: ElectronMuonTopoInfo.h:135
ElectronMuonTopoInfo::DeltaPhi
float DeltaPhi() const
Definition: ElectronMuonTopoInfo.h:63
TauJet.h
egammaContainer.h
operator==
bool operator==(const ElectronMuonTopoInfo &d1, const ElectronMuonTopoInfo &d2)
Definition: ElectronMuonTopoInfo.cxx:82