ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigMonitoring
TrigIDR4Monitoring
src
ElectronTraits.h
Go to the documentation of this file.
1
// emacs: this is -*- c++ -*-
14
15
#ifndef IDTPM2_ELECTRONTRAITS_H
16
#define IDTPM2_ELECTRONTRAITS_H
17
18
#include "
xAODEgamma/ElectronContainer.h
"
19
20
#include "
TrackTraits.h
"
21
22
23
template
<>
24
struct
TrackTraits
<
xAOD
::
Electron
> :
public
TrackTraitsBase
<xAOD::Electron> {
25
26
public
:
27
28
static
uint8_t
summary_value
(
const
xAOD::Electron
& e,
xAOD::SummaryType
type
) {
29
uint8_t n(0); e.trackParticle()->summaryValue(n,
type
);
return
n;
30
}
31
32
static
float
pt
(
const
xAOD::Electron
& e) {
return
e.pt(); }
33
static
float
eta
(
const
xAOD::Electron
& e) {
return
e.eta(); }
34
static
float
theta
(
const
xAOD::Electron
& e) {
return
2*std::atan(std::exp(-e.eta())); }
35
static
float
phi
(
const
xAOD::Electron
& e) {
return
e.phi(); }
36
37
static
float
m
(
const
xAOD::Electron
& e) {
return
e.m(); }
38
39
static
float
z0
(
const
xAOD::Electron
& e) {
return
e.trackParticle()->z0() + e.trackParticle()->vz(); }
40
static
float
d0
(
const
xAOD::Electron
& e) {
return
e.trackParticle()->d0(); }
41
42
static
float
qOverP
(
const
xAOD::Electron
& e) {
return
e.trackParticle()->qOverP(); }
43
46
static
float
p
(
const
xAOD::Electron
& e) {
47
if
( e.trackParticle()->qOverP()==0 )
throw
std::runtime_error(
"divide by 0 - track qOverP() is 0"
);
48
return
1/e.trackParticle()->qOverP();
49
}
50
51
static
float
E
(
const
xAOD::Electron
& e) {
return
e.e(); }
52
53
static
float
ET
(
const
xAOD::Electron
& e) {
return
e.e()*std::sin(
theta
(e)); }
54
55
56
#if 0
60
static
float
dphi
(
const
xAOD::Electron
& e) {
return
std::sqrt(e.trackParticle()->definingParametersCovMatrix()(
Trk::phi0
,
Trk::phi0
)); }
61
static
float
dtheta
(
const
xAOD::Electron
& e) {
return
std::sqrt(
e
.trackParticle()->definingParametersCovMatrix()(
Trk::theta
,
Trk::theta
)); }
62
static
float
dqOverP
(
const
xAOD::Electron
& e) {
return
std::sqrt(
e
.trackParticle()->definingParametersCovMatrix()(
Trk::qOverP
,
Trk::qOverP
)); }
63
64
static
float
deta
(
const
xAOD::Electron
& e) {
return
0.5*
dtheta
(e)/(std::cos(0.5*
theta
(e))*std::cos(0.5*
theta
(e))*std::tan(0.5*
theta
(e))); }
// ???? CHECK THIS <<--
65
66
static
float
dz0
(
const
xAOD::Electron
& e) {
return
std::sqrt(
e
.trackParticle()->definingParametersCovMatrix()(
Trk::z0
,
Trk::z0
)); }
67
static
float
dd0
(
const
xAOD::Electron
& e) {
return
std::sqrt(
e
.trackParticle()->definingParametersCovMatrix()(
Trk::d0
,
Trk::d0
)); }
68
69
static
float
dpt
(
const
xAOD::Electron
& e) {
70
double
th
=
theta
(e);
71
double
dth =
dtheta
(e);
72
double
sintheta = std::sin(th);
73
double
costheta = std::cos(th);
74
double
p_ =
p
(e);
75
double
dqovp =
dqOverP
(e);
76
double
dpt2 = (p_*p_*sintheta)*(p_*p_*sintheta)*dqovp*dqovp + (p_*costheta)*(p_*costheta)*dth*dth - 2*(p_*p_*sintheta)*(p_*costheta)*
covthetaOvP
(e);
77
if
( dpt2>0 )
return
std::sqrt( dpt2 );
78
return
0;
79
}
80
81
static
float
covthetaOvP
(
const
xAOD::Electron
& e) {
return
e
.trackParticle()->definingParametersCovMatrix()(
Trk::qOverP
,
Trk::theta
); };
82
83
static
float
chi2
(
const
xAOD::Electron
& e) {
return
e
.trackParticle()->chiSquared(); }
84
static
float
ndof
(
const
xAOD::Electron
& e) {
return
e
.trackParticle()->numberDoF(); }
85
86
static
uint8_t
hasValidTime
(
const
xAOD::Electron
& e) {
return
e
.trackParticle()->hasValidTime(); }
87
static
float
time
(
const
xAOD::Electron
& e) {
return
e
.trackParticle()->time(); }
88
89
// static float pTsig(const xAOD::Electron& t) { return t.charge() ? std::copysign( t.pt(), t.charge() ) : 0.; }
90
// static float z0SinTheta(const xAOD::Electron& t) { return z0( p ) * std::sin( theta( p ) ); }
91
92
#endif
93
94
template
<
typename
U>
95
static
void
addChildren
(
const
xAOD::Electron
& e, std::vector<U>& v ) { v.emplace_back( e.trackParticle() ); }
96
97
};
98
99
100
101
102
#endif
// IDTPM2_ELECTRONTRAITS_H
103
104
105
106
107
108
109
theta
Scalar theta() const
theta method
Definition
AmgMatrixBasePlugin.h:75
ElectronContainer.h
TrackTraits.h
Electron
Class describing an electron.
AllowedVariables::e
e
Definition
AsgElectronSelectorTool.cxx:38
Trk::phi0
@ phi0
Definition
ParamDefs.h:65
Trk::theta
@ theta
Definition
ParamDefs.h:66
Trk::qOverP
@ qOverP
perigee
Definition
ParamDefs.h:67
Trk::d0
@ d0
Definition
ParamDefs.h:63
Trk::z0
@ z0
Definition
ParamDefs.h:64
python.TriggerHandler.th
th
Definition
TriggerHandler.py:295
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition
ICaloAffectedTool.h:24
xAOD::uint8_t
uint8_t
Definition
Muon_v1.cxx:500
xAOD::SummaryType
SummaryType
Enumerates the different types of information stored in Summary.
Definition
TrackingPrimitives.h:224
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition
Electron.h:17
type
TrackTraitsBase
raw track traits - use for the TrackParticle by default, specialise for anything else,...
Definition
TrackTraits.h:47
TrackTraitsBase::hasValidTime
static uint8_t hasValidTime(const T &)
Definition
TrackTraits.h:82
TrackTraitsBase::deta
static float deta(const T &)
Definition
TrackTraits.h:68
TrackTraitsBase::time
static float time(const T &)
Definition
TrackTraits.h:83
TrackTraitsBase::chi2
static float chi2(const T &)
Definition
TrackTraits.h:79
TrackTraitsBase::dqOverP
static float dqOverP(const T &)
Definition
TrackTraits.h:66
TrackTraitsBase::p
static float p(const T &)
Definition
TrackTraits.h:56
TrackTraitsBase::dphi
static float dphi(const T &)
Definition
TrackTraits.h:64
TrackTraitsBase::dz0
static float dz0(const T &)
Definition
TrackTraits.h:70
TrackTraitsBase::dpt
static float dpt(const T &)
Definition
TrackTraits.h:73
TrackTraitsBase::ndof
static float ndof(const T &)
Definition
TrackTraits.h:80
TrackTraitsBase::dd0
static float dd0(const T &)
Definition
TrackTraits.h:71
TrackTraitsBase::dtheta
static float dtheta(const T &)
Definition
TrackTraits.h:65
TrackTraitsBase::covthetaOvP
static float covthetaOvP(const T &)
Definition
TrackTraits.h:75
TrackTraits< xAOD::Electron >::z0
static float z0(const xAOD::Electron &e)
Definition
ElectronTraits.h:39
TrackTraits< xAOD::Electron >::summary_value
static uint8_t summary_value(const xAOD::Electron &e, xAOD::SummaryType type)
Definition
ElectronTraits.h:28
TrackTraits< xAOD::Electron >::m
static float m(const xAOD::Electron &e)
Definition
ElectronTraits.h:37
TrackTraits< xAOD::Electron >::theta
static float theta(const xAOD::Electron &e)
Definition
ElectronTraits.h:34
TrackTraits< xAOD::Electron >::E
static float E(const xAOD::Electron &e)
Definition
ElectronTraits.h:51
TrackTraits< xAOD::Electron >::ET
static float ET(const xAOD::Electron &e)
Definition
ElectronTraits.h:53
TrackTraits< xAOD::Electron >::eta
static float eta(const xAOD::Electron &e)
Definition
ElectronTraits.h:33
TrackTraits< xAOD::Electron >::addChildren
static void addChildren(const xAOD::Electron &e, std::vector< U > &v)
Definition
ElectronTraits.h:95
TrackTraits< xAOD::Electron >::p
static float p(const xAOD::Electron &e)
is this really the best way to do it ?
Definition
ElectronTraits.h:46
TrackTraits< xAOD::Electron >::pt
static float pt(const xAOD::Electron &e)
Definition
ElectronTraits.h:32
TrackTraits< xAOD::Electron >::qOverP
static float qOverP(const xAOD::Electron &e)
Definition
ElectronTraits.h:42
TrackTraits< xAOD::Electron >::phi
static float phi(const xAOD::Electron &e)
Definition
ElectronTraits.h:35
TrackTraits< xAOD::Electron >::d0
static float d0(const xAOD::Electron &e)
Definition
ElectronTraits.h:40
TrackTraits
Definition
TrackTraits.h:123
Generated on
for ATLAS Offline Software by
1.17.0