ATLAS Offline Software
Loading...
Searching...
No Matches
ElectronxAODHelpers.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
9
10// ==================================================================
12
13 if(el){
14 const xAOD::TrackParticle* trkPar= el->trackParticle();
15 if(trkPar){
17 }
18 }
19 return nullptr;
20}
21// ==================================================================
23
24 if(! trkPar) {return nullptr;}
25 static const SG::AuxElement::Accessor<ElementLink<xAOD::TrackParticleContainer> > orig ("originalTrackParticle");
26 if (!orig.isAvailable(*trkPar) || !orig(*trkPar).isValid()) {return nullptr;}
27
28 return (*orig(*trkPar));
29}
30// ==================================================================
32 static const SG::AuxElement::Accessor<float > QoverPLM ("QoverPLM");
33 if(tp && QoverPLM.isAvailable(*tp)){
34 return QoverPLM(*tp);
35 }
36 return -999 ;
37}
38// ==================================================================
39std::set<const xAOD::TrackParticle*> xAOD::EgammaHelpers::getTrackParticles(const xAOD::Electron* el,
40 bool useBremAssoc /* = true */,
41 bool allParticles /* = true */){
42 std::set<const xAOD::TrackParticle*> tps;
43 for (unsigned int i = 0; i < el->nTrackParticles(); ++i){
44 const xAOD::TrackParticle* tp = el->trackParticle(i);
46 if (tp) tps.insert( tp );
47 if (!allParticles) break; // break after first particle
48 }
49 return tps;
50}
51// ==================================================================
52std::vector<const xAOD::TrackParticle*> xAOD::EgammaHelpers::getTrackParticlesVec(const xAOD::Electron* el,
53 bool useBremAssoc /* = true */,
54 bool allParticles /* = true */){
55
56 std::vector<const xAOD::TrackParticle*> tps;
57 for (unsigned int i = 0; i < el->nTrackParticles(); ++i){
58 const xAOD::TrackParticle* tp = el->trackParticle(i);
60 if (tp) {tps.push_back( tp );}
61 if (!allParticles) {break;} // break after first particle
62 }
63 return tps;
64}
65// ==================================================================
67 if (!tp) return 0;
68 uint8_t dummy(0);
69 uint8_t nSiHits(0);
70 if (tp->summaryValue(dummy, xAOD::numberOfPixelHits)){
71 nSiHits += dummy;
72 }
73 if (tp->summaryValue(dummy, xAOD::numberOfSCTHits)){
74 nSiHits += dummy;
75 }
76 return nSiHits;
77}
78
79
80
81
SG::Accessor< T, ALLOC > Accessor
Definition AuxElement.h:572
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
std::vector< const xAOD::TrackParticle * > getTrackParticlesVec(const xAOD::Egamma *eg, bool useBremAssoc=true, bool allParticles=true)
Return a list of all or only the best TrackParticle associated to the object.
std::set< const xAOD::TrackParticle * > getTrackParticles(const xAOD::Egamma *eg, bool useBremAssoc=true, bool allParticles=true)
Return a list of all or only the best TrackParticle associated to the object.
float getLastMeasurementQoverP(const xAOD::TrackParticle *tp)
return parameters for the last measurement for a GSF track particle
const xAOD::TrackParticle * getOriginalTrackParticleFromGSF(const xAOD::TrackParticle *trkPar)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the GSF Track Particle...
std::size_t numberOfSiHits(const xAOD::TrackParticle *tp)
return the number of Si hits in the track particle
const xAOD::TrackParticle * getOriginalTrackParticle(const xAOD::Electron *el)
Helper function for getting the "Original" Track Particle (i.e before GSF) via the electron.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Electron_v1 Electron
Definition of the current "egamma version".