ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
EGammaAmbiguityTool Class Reference

Electron / photon ambiguity resolution. Dual-use version. More...

#include <EGammaAmbiguityTool.h>

Inheritance diagram for EGammaAmbiguityTool:
Collaboration diagram for EGammaAmbiguityTool:

Public Member Functions

 EGammaAmbiguityTool (const std::string &myname)
 Standard constructor. More...
 
virtual ~EGammaAmbiguityTool ()=default
 Standard destructor. More...
 
virtual StatusCode initialize () override final
 Gaudi Service Interface method implementations. More...
 
virtual unsigned int ambiguityResolve (const xAOD::CaloCluster *cluster, const xAOD::Vertex *vx, const xAOD::TrackParticle *tp, xAOD::AmbiguityTool::AmbiguityType &type) const override final
 Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown. More...
 
virtual unsigned int ambiguityResolve (const xAOD::CaloCluster *cluster, const xAOD::Vertex *vx, const xAOD::TrackParticle *tp) const override final
 Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown Needed because of existing client usage (i.e Trigger). More...
 
virtual unsigned int ambiguityResolve (const xAOD::Egamma &egamma) const override final
 Access the ambiguity resolution of central electrons and photons and return AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown or the author of the object if no overlapping object is found. More...
 
virtual bool accept (const xAOD::Egamma &egamma) const override final
 Accept or reject egamma object based on ambiguity resolution (e.g. More...
 
bool hasInnermostPixelHit (const xAOD::TrackParticle &tp) const
 Return true if track has innermost pixel hit or next-to-innermost in case innermost is not expected or at least m_MinNoPixHits pixel hits in case next-to-innermost is not expected. More...
 
size_t nTrkWithInnermostPixelHits (const xAOD::Vertex &vx) const
 Return the number of tracks with "innermost pixel hits" (see above) in the given vertex. More...
 
bool isInVertex (const xAOD::TrackParticle &, const xAOD::Vertex &) const
 Return true if the given TrackParticle is part of the vertex. More...
 
bool passDeltaR_innermost (const xAOD::Vertex &vx) const
 Return true if the vertex passes the requirement on Rconv - RfirstHit. More...
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

int m_MinNoSiHits
 Minimum number of silicon hits to be an electron and not a photon. More...
 
int m_MinNoPixHits
 Minimum number of pixel hits to be an electron and not a photon. More...
 
float m_maxEoverPCut
 Maximum EoverP, more that this is ambiguous. More...
 
float m_minPtCut
 Minimum Pt, less that this is ambiguous. More...
 
float m_maxDeltaR_innermost
 Maximum value for Rconv - RfirstHit for Si+Si conversions where both tracks have innermost hits. More...
 
bool m_noVertexNoInnermostAsAmb
 no vertex && no innermost hit -> amb. More...
 
bool m_acceptAmbiguous
 @When used as a selector reject/accpet ambiguous cases More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Electron / photon ambiguity resolution. Dual-use version.

Electron / photon ambiguity resolution. Dual-use version, interface.

Authors
Bruno Lenzi, Anastopoulos Christos, Ludovica Apperio Bella
Date
May 2015
Author
Bruno Lenzi , Christos Anastopoulos, Ruggero Turra
Date
May 2015
Author
Bruno Lenzi
Date
May 2015

Definition at line 21 of file EGammaAmbiguityTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ EGammaAmbiguityTool()

EGammaAmbiguityTool::EGammaAmbiguityTool ( const std::string &  myname)

Standard constructor.

Definition at line 38 of file EGammaAmbiguityTool.cxx.

39  : asg::AsgTool(myname)
40 {
42  "minNoSiHits",
43  m_MinNoSiHits = 4,
44  "Minimum number of silicon hits to be an electron==>not photon for sure");
46  "minNoPixHits",
47  m_MinNoPixHits = 2,
48  "Minimum number of Pixel hits to be an electron==>not photon for sure");
49  declareProperty("maxEoverPCut",
50  m_maxEoverPCut = 10,
51  "Maximum EoverP , more that this is ambiguous");
53  "minPCut", m_minPtCut = 2000, "Minimum Pt, less than that is ambiguous");
54  declareProperty("maxDeltaR_innermost",
56  "Maximum value for Rconv - RfirstHit for Si+Si conversions "
57  "where both tracks have innermost hits");
58  declareProperty("noVertexNoInnermostAsAmb",
60  "If true classify as ambiguous when there is no vertex and "
61  "no innermost Hits. "
62  "If false classify no vertex as for sure not photon");
63  declareProperty("AcceptAmbiguous",
64  m_acceptAmbiguous = true,
65  "When used as a selector accept the ambiguous as default");
66 }

◆ ~EGammaAmbiguityTool()

virtual EGammaAmbiguityTool::~EGammaAmbiguityTool ( )
virtualdefault

Standard destructor.

Member Function Documentation

◆ accept()

bool EGammaAmbiguityTool::accept ( const xAOD::Egamma egamma) const
finaloverridevirtual

Accept or reject egamma object based on ambiguity resolution (e.g.

Accept or reject egamma object based on ambiguity resolution.

if object is a photon and ambiguity return value is electron -> reject)

Implements IEGammaAmbiguityTool.

Definition at line 288 of file EGammaAmbiguityTool.cxx.

288  {
289  unsigned int author = ambiguityResolve(egamma);
290 
293  return true;
294  }
295 
297  return true;
298  }
299 
300  return (author == (egamma.type() == xAOD::Type::Electron ?
302 }

◆ ambiguityResolve() [1/3]

unsigned int EGammaAmbiguityTool::ambiguityResolve ( const xAOD::CaloCluster cluster,
const xAOD::Vertex vx,
const xAOD::TrackParticle tp 
) const
finaloverridevirtual

Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown Needed because of existing client usage (i.e Trigger).

Implementation calls method above

Implements IEGammaAmbiguityTool.

Definition at line 231 of file EGammaAmbiguityTool.cxx.

233  {
234 
236  return ambiguityResolve(cluster,
237  vx,
238  tp,
239  type);
240 
241 }

◆ ambiguityResolve() [2/3]

unsigned int EGammaAmbiguityTool::ambiguityResolve ( const xAOD::CaloCluster cluster,
const xAOD::Vertex vx,
const xAOD::TrackParticle tp,
xAOD::AmbiguityTool::AmbiguityType type 
) const
finaloverridevirtual

Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown.

Implements IEGammaAmbiguityTool.

Definition at line 75 of file EGammaAmbiguityTool.cxx.

78  {
79 
81  // Result should stay the same before after calibration corrections
82  double cluster_e = (cluster->clusterSize() != xAOD::CaloCluster::SW_35ele &&
85  ? cluster->altE()
86  : cluster->e();
87 
88  //Number of hits from the track
89  uint8_t trkPixelHits(0);
90  uint8_t trkSiHits(0);
91  if (tp && !tp->summaryValue(trkPixelHits,xAOD::numberOfPixelHits)){
92  ATH_MSG_WARNING("Could not retrieve number of pixel hits from track");
93  }
94  if (tp && !tp->summaryValue(trkSiHits, xAOD::numberOfSCTHits)){
95  ATH_MSG_WARNING("Could not retrieve number of SCT hits from track");
96  }
97  trkSiHits += trkPixelHits;
98 
99  //Check if the vertex is double silicon
101  bool vxDoubleSi = (convType == xAOD::EgammaParameters::doubleSi);
102 
103  // Check if the track particle and the ones associated to the conversion vertex
104  // have innermost pixel hits
105  bool trkHasInnermostHit = tp && hasInnermostPixelHit(*tp);
106  size_t nTrkVxWithInnermostHit = vxDoubleSi ? nTrkWithInnermostPixelHits(*vx) : 0;
107 
108  //See if the Si+Si conversion shares one track with the electron
109  //if not we might have a trident.
110  //if yes and the track is not good we definetely matched the conversion as electron.
111  bool shareTrack = tp && trkSiHits>=m_MinNoSiHits && vxDoubleSi && isInVertex(*tp, *vx);
112 
113  //Debug messages
114  ATH_MSG_DEBUG("Vertex, SiSi, tracks with innermost pixel hits: "
115  << (vx != nullptr) << ", " << vxDoubleSi << ", " << nTrkVxWithInnermostHit);
116  ATH_MSG_DEBUG("Track, Si hits, pixel hits, has innermost pixel hit: "
117  << (tp != nullptr) << ", " << (int) trkSiHits << ", " << (int) trkPixelHits
118  << " , " << (int) trkHasInnermostHit);
119  ATH_MSG_DEBUG("Share track : " << shareTrack);
120 
121  //The Electron collection will NOT contain Photons
122  //The Photon collection will NOT contain Electrons
123 
124  //So for conversions vs electrons better to go to ambiguous
125  //except if we are sure.
126 
127  //Practically a photon here means definetely not Electron
128  //And vice-versa
129 
130  //Photon ==> Surely not electron
131  // - no track
132  // - or no track with the minimum requirent hits to be an electron
133  // - or Si+Si vertex and
134  // - No pixel
135  // - The electron track is part of the conversion
136  // In this case we do not want this to be in Electrons
137  if (!tp ||
138  trkSiHits<m_MinNoSiHits ||
139  (vxDoubleSi && !trkPixelHits && shareTrack)){
140  ATH_MSG_DEBUG("Returning Photon");
143  }
144 
145  // Ambigous due to E/P, Min Pt, pixel hits
146  // We are not sure it is a Photon, but is not good enough either to be surely
147  // an Electron
148  // - E/P >10 or track Pt < 2.0 GeV or no-pixel then Ambiguous
149  double track_ep = cluster_e * fabs(tp->qOverP());
150 
151  if(tp->pt()<m_minPtCut) {
152  ATH_MSG_DEBUG("Returning Ambiguous due min Pt");
155  }
156 
157  if( track_ep > m_maxEoverPCut) {
158  ATH_MSG_DEBUG("Returning Ambiguous due to E over P");
161  }
162 
163 
164  if(!trkPixelHits) {
165  ATH_MSG_DEBUG("Returning Ambiguous due to no pixels");
168  }
169 
170  // Electron ==> Surely not Photon
171  // - No vertex Matched (and trk has "innermost pixel hits" when
172  // m_noVertexNoInnermostAsAmb is true,
173  // othewise ambiguous)
174  // - Track with at least the minimum Si and Pixel hits (previous selection for
175  // photons/ambiguous)
176  // - And has E/P < 10 and Pt > 2.0 GeV (previous for ambiguous)
177  // - Or if a vertex exists and:
178  // * is not Si+Si
179  // * is Si+Si but only 1 trk has "innermost pixel hits"
180  // * is Si+Si and both tracks have "innermost pixel hits" but
181  // Rconv - RfirstHit > maxDeltaR_innermost
182  // In this case we do not want this to be in Photons
183 
184  if (!vx) {
185  if (trkHasInnermostHit || !m_noVertexNoInnermostAsAmb) {
186  ATH_MSG_DEBUG("Returning Electron");
189  } else {
190  // the true photons falling here are classified as unconverted photons
191  // but it may happen that they are late single-track conversions
192  // very few true electrons are falling here, since there is no innermost
193  // hits
194  ATH_MSG_DEBUG("Returning Ambiguous due to no conv vertex and track with "
195  "no innermost hits");
198  }
199  }
200 
201  // here we have a conv vertex
202  if (trkHasInnermostHit && (!vxDoubleSi || nTrkVxWithInnermostHit == 1 ||
203  !passDeltaR_innermost(*vx))) {
204  ATH_MSG_DEBUG("Returning Electron");
207  }
208 
209  // Ambiguous all else, these will go to both electrons and photons
210  // A matched Si+Si vertex (where either both or none of the tracks have
211  // "innermost pixel hits")
212  // and a track with "innermost pixel hits"
213  // A non Si+Si vertex matched and a track with no "innermost pixel hits"
214 
215  //If we have no double si
216  //or if the single track p matches the cluster E than the vertex p
217  //mark TrackEoverPBetterThanVertexEover.
218  //Otherwise maek as TrackEoverPBetterThanVertexEover
219  //as the double si vertex is a better match to the cluster E.
220  const double track_p = fabs(1.0/tp->qOverP());
221  const double vertex_p=xAOD::EgammaHelpers::momentumAtVertex(*vx).mag() ;
222  type = !vxDoubleSi || (fabs(track_p - cluster_e) < fabs(vertex_p- cluster_e))?
225  //end of types
226 
227  ATH_MSG_DEBUG("Returning Ambiguous");
229 }

◆ ambiguityResolve() [3/3]

unsigned int EGammaAmbiguityTool::ambiguityResolve ( const xAOD::Egamma egamma) const
finaloverridevirtual

Access the ambiguity resolution of central electrons and photons and return AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown or the author of the object if no overlapping object is found.

Redo the ambiguity resolution of central electrons and photons and return AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown or the author of the object if no overlapping object is found.

ELink.isAvailable(*egamma)) {

Implements IEGammaAmbiguityTool.

Definition at line 249 of file EGammaAmbiguityTool.cxx.

249  {
250 
251  //Fwd and Topo seeded not handled
254  ATH_MSG_DEBUG("Author Fwd of Topo seeded. Do not do overlap or ambiguity");
255  return egamma.author();
256  }
257 
258  //No overlap found so either photon or electron
259  if (!egamma.ambiguousObject()){
261  ATH_MSG_DEBUG("No overlaping object found");
262  return egamma.author();
263  }
264 
265  // Overlap found. define the electron and the photon
266  const xAOD::Electron* electron = static_cast<const xAOD::Electron*>(
267  egamma.type() == xAOD::Type::Electron ? &egamma : egamma.ambiguousObject());
268  const xAOD::Photon* photon = static_cast<const xAOD::Photon*>(
269  egamma.type() == xAOD::Type::Photon ? &egamma : egamma.ambiguousObject());
270 
271  //Error if cannot define any of them
272  if (!electron || !photon){
273  ATH_MSG_WARNING("Could not cast to electron and/or photon");
274  return egamma.author();
275  }
276 
277  //pass the proper input to the ambiguity resolve method
279  unsigned int result = ambiguityResolve(electron->caloCluster(),
280  photon->vertex(),
281  electron->trackParticle(),
282  type);
283  ATH_MSG_DEBUG("Performed ambiguity resolution, resulting type is: "<< type);
284  return result;
285 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getProperty()

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ hasInnermostPixelHit()

bool EGammaAmbiguityTool::hasInnermostPixelHit ( const xAOD::TrackParticle tp) const

Return true if track has innermost pixel hit or next-to-innermost in case innermost is not expected or at least m_MinNoPixHits pixel hits in case next-to-innermost is not expected.

Definition at line 308 of file EGammaAmbiguityTool.cxx.

309 {
310  uint8_t trkExpectHit(0);
311  uint8_t trkNhits(0);
312  CHECK_HITS( tp.summaryValue(trkNhits,xAOD::numberOfInnermostPixelLayerHits) );
313  if (trkNhits) {return true;}
314 
315  CHECK_HITS( tp.summaryValue(trkExpectHit,xAOD::expectInnermostPixelLayerHit) );
316  if (trkExpectHit) {return false;}
317 
319  if (trkNhits) {return true;}
320 
321  CHECK_HITS( tp.summaryValue(trkExpectHit,xAOD::expectNextToInnermostPixelLayerHit) );
322  if (trkExpectHit) {return false;}
323 
324  CHECK_HITS( tp.summaryValue(trkNhits,xAOD::numberOfPixelHits) );
325  return (trkNhits >= m_MinNoPixHits);
326 }

◆ initialize()

StatusCode EGammaAmbiguityTool::initialize ( )
finaloverridevirtual

Gaudi Service Interface method implementations.

Reimplemented from asg::AsgTool.

Definition at line 68 of file EGammaAmbiguityTool.cxx.

68  {
69  ATH_MSG_DEBUG("Initializing " << name() << "...");
70  return StatusCode::SUCCESS;
71 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isInVertex()

bool EGammaAmbiguityTool::isInVertex ( const xAOD::TrackParticle trk,
const xAOD::Vertex vx 
) const

Return true if the given TrackParticle is part of the vertex.

Definition at line 341 of file EGammaAmbiguityTool.cxx.

341  {
342  for (size_t i = 0; i < vx.nTrackParticles(); ++i){
343  const xAOD::TrackParticle *tp = vx.trackParticle(i);
344  if (!tp) {ATH_MSG_WARNING("Null pointer to track particle in vertex");}
345  if (tp == &trk) {return true;}
346  }
347  return false;
348 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ nTrkWithInnermostPixelHits()

size_t EGammaAmbiguityTool::nTrkWithInnermostPixelHits ( const xAOD::Vertex vx) const

Return the number of tracks with "innermost pixel hits" (see above) in the given vertex.

Definition at line 330 of file EGammaAmbiguityTool.cxx.

330  {
331  size_t n = 0;
332  for (size_t i = 0; i < vx.nTrackParticles(); ++i){
333  const xAOD::TrackParticle *tp = vx.trackParticle(i);
334  if (!tp) {ATH_MSG_WARNING("Null pointer to track particle in vertex");}
335  else if (hasInnermostPixelHit(*tp)) {++n;}
336  }
337  return n;
338 }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ passDeltaR_innermost()

bool EGammaAmbiguityTool::passDeltaR_innermost ( const xAOD::Vertex vx) const

Return true if the vertex passes the requirement on Rconv - RfirstHit.

Definition at line 351 of file EGammaAmbiguityTool.cxx.

352 {
353  static const SG::AuxElement::Accessor<float> minRfirstHitAcc("minRfirstHit");
354  if (not minRfirstHitAcc.isAvailable(vx)) {
355  ATH_MSG_WARNING("minRfirstHit not available");
356  return false;
357  }
358  return xAOD::EgammaHelpers::conversionRadius(&vx) - minRfirstHitAcc(vx) < m_maxDeltaR_innermost;
359 }

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_acceptAmbiguous

bool EGammaAmbiguityTool::m_acceptAmbiguous
private

@When used as a selector reject/accpet ambiguous cases

Definition at line 97 of file EGammaAmbiguityTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_maxDeltaR_innermost

float EGammaAmbiguityTool::m_maxDeltaR_innermost
private

Maximum value for Rconv - RfirstHit for Si+Si conversions where both tracks have innermost hits.

Definition at line 93 of file EGammaAmbiguityTool.h.

◆ m_maxEoverPCut

float EGammaAmbiguityTool::m_maxEoverPCut
private

Maximum EoverP, more that this is ambiguous.

Definition at line 89 of file EGammaAmbiguityTool.h.

◆ m_MinNoPixHits

int EGammaAmbiguityTool::m_MinNoPixHits
private

Minimum number of pixel hits to be an electron and not a photon.

Definition at line 87 of file EGammaAmbiguityTool.h.

◆ m_MinNoSiHits

int EGammaAmbiguityTool::m_MinNoSiHits
private

Minimum number of silicon hits to be an electron and not a photon.

Definition at line 85 of file EGammaAmbiguityTool.h.

◆ m_minPtCut

float EGammaAmbiguityTool::m_minPtCut
private

Minimum Pt, less that this is ambiguous.

Definition at line 91 of file EGammaAmbiguityTool.h.

◆ m_noVertexNoInnermostAsAmb

bool EGammaAmbiguityTool::m_noVertexNoInnermostAsAmb
private

no vertex && no innermost hit -> amb.

Use true in reconstruction to have more ambiguous

Definition at line 95 of file EGammaAmbiguityTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
CHECK_HITS
#define CHECK_HITS(EXP)
Definition: EGammaAmbiguityTool.cxx:29
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
get_generator_info.result
result
Definition: get_generator_info.py:21
xAOD::Vertex_v1::nTrackParticles
size_t nTrackParticles() const
Get the number of tracks associated with this vertex.
Definition: Vertex_v1.cxx:270
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
EGammaAmbiguityTool::m_maxDeltaR_innermost
float m_maxDeltaR_innermost
Maximum value for Rconv - RfirstHit for Si+Si conversions where both tracks have innermost hits.
Definition: EGammaAmbiguityTool.h:93
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
EGammaAmbiguityTool::m_MinNoSiHits
int m_MinNoSiHits
Minimum number of silicon hits to be an electron and not a photon.
Definition: EGammaAmbiguityTool.h:85
EGammaAmbiguityTool::ambiguityResolve
virtual unsigned int ambiguityResolve(const xAOD::CaloCluster *cluster, const xAOD::Vertex *vx, const xAOD::TrackParticle *tp, xAOD::AmbiguityTool::AmbiguityType &type) const override final
Return value: AuthorElectron, AuthorPhoton, AuthorAmbiguous, AuthorUnknown.
Definition: EGammaAmbiguityTool.cxx:75
EGammaAmbiguityTool::nTrkWithInnermostPixelHits
size_t nTrkWithInnermostPixelHits(const xAOD::Vertex &vx) const
Return the number of tracks with "innermost pixel hits" (see above) in the given vertex.
Definition: EGammaAmbiguityTool.cxx:330
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::AmbiguityTool::unknown
@ unknown
Definition: IEGammaAmbiguityTool.h:42
xAOD::CaloCluster_v1::SuperCluster
@ SuperCluster
Definition: CaloCluster_v1.h:107
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
ParticleTest.tp
tp
Definition: ParticleTest.py:25
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::expectInnermostPixelLayerHit
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
Definition: TrackingPrimitives.h:236
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::EgammaParameters::ConversionType
ConversionType
Definition: EgammaEnums.h:268
xAOD::EgammaParameters::AuthorFwdElectron
const uint16_t AuthorFwdElectron
Electron reconstructed by the Forward cluster-based algorithm.
Definition: EgammaDefs.h:30
EGammaAmbiguityTool::hasInnermostPixelHit
bool hasInnermostPixelHit(const xAOD::TrackParticle &tp) const
Return true if track has innermost pixel hit or next-to-innermost in case innermost is not expected o...
Definition: EGammaAmbiguityTool.cxx:308
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
egamma
Definition: egamma.h:58
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
xAOD::CaloCluster_v1::clusterSize
ClusterSize clusterSize() const
Get cluster size.
Definition: CaloCluster_v1.cxx:364
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
AthCommonDataStore
Definition: AthCommonDataStore.h:52
xAOD::AmbiguityTool::electron
@ electron
Definition: IEGammaAmbiguityTool.h:34
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::expectNextToInnermostPixelLayerHit
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
Definition: TrackingPrimitives.h:247
lumiFormat.i
int i
Definition: lumiFormat.py:92
xAOD::EgammaParameters::AuthorCaloTopo35
const uint16_t AuthorCaloTopo35
Photon reconstructed by SW CaloTopo35 seeded clusters.
Definition: EgammaDefs.h:38
xAOD::EgammaParameters::AuthorAmbiguous
const uint16_t AuthorAmbiguous
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:32
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::CaloCluster_v1::SW_35gam
@ SW_35gam
Definition: CaloCluster_v1.h:93
xAOD::AmbiguityTool::ambiguousVertexEoverPBetterThanTrackEoverP
@ ambiguousVertexEoverPBetterThanTrackEoverP
Definition: IEGammaAmbiguityTool.h:40
xAOD::EgammaHelpers::momentumAtVertex
Amg::Vector3D momentumAtVertex(const xAOD::Photon *, bool debug=false)
return the momentum at the vertex (which can be 0)
Definition: PhotonxAODHelpers.cxx:88
xAOD::EgammaParameters::doubleSi
@ doubleSi
two tracks, both with Si hits
Definition: EgammaEnums.h:279
xAOD::AmbiguityTool::ambiguousTrackEoverPBetterThanVertexEoverP
@ ambiguousTrackEoverPBetterThanVertexEoverP
Definition: IEGammaAmbiguityTool.h:35
EGammaAmbiguityTool::m_acceptAmbiguous
bool m_acceptAmbiguous
@When used as a selector reject/accpet ambiguous cases
Definition: EGammaAmbiguityTool.h:97
python.xAODType.dummy
dummy
Definition: xAODType.py:4
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
EGammaAmbiguityTool::m_MinNoPixHits
int m_MinNoPixHits
Minimum number of pixel hits to be an electron and not a photon.
Definition: EGammaAmbiguityTool.h:87
xAOD::Vertex_v1::trackParticle
const TrackParticle * trackParticle(size_t i) const
Get the pointer to a given track that was used in vertex reco.
Definition: Vertex_v1.cxx:249
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
xAOD::AmbiguityTool::AmbiguityType
AmbiguityType
Definition: IEGammaAmbiguityTool.h:33
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
egamma::author
unsigned int author() const
Reconstruction Author
Definition: egamma.h:244
xAOD::numberOfNextToInnermostPixelLayerHits
@ numberOfNextToInnermostPixelLayerHits
these are the hits in the 1st pixel barrel layer
Definition: TrackingPrimitives.h:248
xAOD::AmbiguityTool::photon
@ photon
Definition: IEGammaAmbiguityTool.h:41
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:192
xAOD::AmbiguityTool::ambiguousNoInnermost
@ ambiguousNoInnermost
Definition: IEGammaAmbiguityTool.h:39
xAOD::CaloCluster_v1::altE
flt_t altE() const
Get Energy in signal state ALTCALIBRATED.
xAOD::EgammaHelpers::conversionRadius
float conversionRadius(const xAOD::Vertex *vx)
return the conversion radius or 9999.
Definition: PhotonxAODHelpers.cxx:76
xAOD::Electron_v1
Definition: Electron_v1.h:34
xAOD::AmbiguityTool::ambiguousTrackHighEoverP
@ ambiguousTrackHighEoverP
Definition: IEGammaAmbiguityTool.h:37
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
EGammaAmbiguityTool::passDeltaR_innermost
bool passDeltaR_innermost(const xAOD::Vertex &vx) const
Return true if the vertex passes the requirement on Rconv - RfirstHit.
Definition: EGammaAmbiguityTool.cxx:351
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
a
TList * a
Definition: liststreamerinfos.cxx:10
EGammaAmbiguityTool::isInVertex
bool isInVertex(const xAOD::TrackParticle &, const xAOD::Vertex &) const
Return true if the given TrackParticle is part of the vertex.
Definition: EGammaAmbiguityTool.cxx:341
EGammaAmbiguityTool::m_noVertexNoInnermostAsAmb
bool m_noVertexNoInnermostAsAmb
no vertex && no innermost hit -> amb.
Definition: EGammaAmbiguityTool.h:95
h
xAOD::AmbiguityTool::ambiguousTrackNoPixel
@ ambiguousTrackNoPixel
Definition: IEGammaAmbiguityTool.h:38
xAOD::Photon_v1
Definition: Photon_v1.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
EGammaAmbiguityTool::m_minPtCut
float m_minPtCut
Minimum Pt, less that this is ambiguous.
Definition: EGammaAmbiguityTool.h:91
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloCondBlobAlgs_fillNoiseFromASCII.author
string author
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:26
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
xAOD::EgammaHelpers::conversionType
xAOD::EgammaParameters::ConversionType conversionType(const xAOD::Photon *ph)
return the photon conversion type (see EgammaEnums)
Definition: PhotonxAODHelpers.cxx:26
xAOD::EgammaParameters::AuthorPhoton
const uint16_t AuthorPhoton
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:28
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:616
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:790
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::AmbiguityTool::ambiguousTrackLowPt
@ ambiguousTrackLowPt
Definition: IEGammaAmbiguityTool.h:36
xAOD::CaloCluster_v1::SW_35ele
@ SW_35ele
Definition: CaloCluster_v1.h:89
SG::DataProxy
Definition: DataProxy.h:44
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
fitman.k
k
Definition: fitman.py:528
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
EGammaAmbiguityTool::m_maxEoverPCut
float m_maxEoverPCut
Maximum EoverP, more that this is ambiguous.
Definition: EGammaAmbiguityTool.h:89
xAOD::EgammaParameters::AuthorElectron
const uint16_t AuthorElectron
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:24