ATLAS Offline Software
Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
DerivationFramework::MergedElectronDetailsDecorator Class Reference

#include <MergedElectronDetailsDecorator.h>

Inheritance diagram for DerivationFramework::MergedElectronDetailsDecorator:
Collaboration diagram for DerivationFramework::MergedElectronDetailsDecorator:

Public Member Functions

 MergedElectronDetailsDecorator (const std::string &t, const std::string &n, const IInterface *p)
 
 ~MergedElectronDetailsDecorator ()
 
StatusCode initialize ()
 
StatusCode finalize ()
 
virtual StatusCode addBranches () const
 

Private Member Functions

void fillMatchDetails (std::vector< float > &trkMatchTrk, const xAOD::TrackParticle *tp, const xAOD::CaloCluster *cluster) const
 
void fillTrackDetails (const xAOD::Electron *el, bool isMC) const
 
void fillVertexDetails (const xAOD::Electron *el) const
 
void fillTruthDetails (std::vector< float > &trkMatchTrk, const xAOD::TrackParticle *tp, const xAOD::CaloCluster *cluster) const
 

Static Private Member Functions

static int nSiHits (const xAOD::TrackParticle *tp)
 
static void fillClusterDetails (const xAOD::Electron *el)
 

Private Attributes

ToolHandle< IEMExtrapolationToolsm_emExtrapolationTool
 
ToolHandle< Trk::IVertexFitterm_VertexFitter
 
ToolHandle< Trk::V0Toolsm_V0Tools
 
float m_minET
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey
 
SG::ReadHandleKey< xAOD::ElectronContainerm_electronKey
 
SG::ReadCondHandleKey< CaloDetDescrManagerm_caloMgrKey
 

Detailed Description

Definition at line 37 of file MergedElectronDetailsDecorator.h.

Constructor & Destructor Documentation

◆ MergedElectronDetailsDecorator()

DerivationFramework::MergedElectronDetailsDecorator::MergedElectronDetailsDecorator ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Definition at line 26 of file MergedElectronDetailsDecorator.cxx.

26  :
27  base_class(t,n,p),
28  m_emExtrapolationTool("EMExtrapolationTools"),
29  m_VertexFitter("Trk::TrkVkalVrtFitter"),
30  m_V0Tools("Trk::V0Tools"),
31  m_minET(5000)
32  {
33  declareProperty("EMExtrapolationTool",m_emExtrapolationTool);
34  declareProperty("VertexFitterTool",m_VertexFitter);
35  declareProperty("V0Tools",m_V0Tools);
36  declareProperty("MinET",m_minET);
37  }

◆ ~MergedElectronDetailsDecorator()

DerivationFramework::MergedElectronDetailsDecorator::~MergedElectronDetailsDecorator ( )

Definition at line 39 of file MergedElectronDetailsDecorator.cxx.

39 {}

Member Function Documentation

◆ addBranches()

StatusCode DerivationFramework::MergedElectronDetailsDecorator::addBranches ( ) const
virtual

Definition at line 75 of file MergedElectronDetailsDecorator.cxx.

75  {
76 
77  const EventContext& ctx = Gaudi::Hive::currentContext();
78 
79  // Retrieve the xAOD event info
81 
83 
84  bool isMC = false;
86  isMC = true;
87 
88 
89  for( const auto *const el : *electrons ){
93  }
94 
95  return StatusCode::SUCCESS;
96 
97  } // addBranches

◆ fillClusterDetails()

void DerivationFramework::MergedElectronDetailsDecorator::fillClusterDetails ( const xAOD::Electron el)
staticprivate

Definition at line 285 of file MergedElectronDetailsDecorator.cxx.

286  {
287  const auto *caloCluster = el->caloCluster();
288 
289  std::vector<float> subCluster_E;
290  std::vector<float> subCluster_dEta;
291  std::vector<float> subCluster_dPhi;
292 
293  static const SG::Accessor<std::vector<ElementLink<xAOD::CaloClusterContainer> > > clusterLinksAcc("constituentClusterLinks");
294  if(caloCluster && clusterLinksAcc.isAvailable(*caloCluster) ){
295  std::vector<ElementLink<xAOD::CaloClusterContainer> > clusterLinks = clusterLinksAcc(*caloCluster);
296  for( const auto& link : clusterLinks){
297  if( link.isValid() ){
298  subCluster_E.push_back( (*link)->e() );
299  subCluster_dEta.push_back( caloCluster->eta() - (*link)->eta() );
300  float dphi = P4Helpers::deltaPhi( caloCluster->phi(), (*link)->phi() );
301  subCluster_dPhi.push_back(dphi);
302  }
303  }
304  }
305  static const SG::Decorator<std::vector<float> > SubCluster_EDec("SubCluster_E");
306  static const SG::Decorator<std::vector<float> > SubCluster_dEtaDec("SubCluster_dEta");
307  static const SG::Decorator<std::vector<float> > SubCluster_dPhiDec("SubCluster_dPhi");
308  SubCluster_EDec(*el) = subCluster_E;
309  SubCluster_dEtaDec(*el) = subCluster_dEta;
310  SubCluster_dPhiDec(*el) = subCluster_dPhi;
311  }

◆ fillMatchDetails()

void DerivationFramework::MergedElectronDetailsDecorator::fillMatchDetails ( std::vector< float > &  trkMatchTrk,
const xAOD::TrackParticle tp,
const xAOD::CaloCluster cluster 
) const
private

Definition at line 130 of file MergedElectronDetailsDecorator.cxx.

132  {
133 
135  const CaloDetDescrManager* caloDDMgr = *caloMgrHandle;
136 
137  //Reset values
138  for(unsigned int i(0); i<trkMatchTrk.size(); ++i ){
139  trkMatchTrk[i] = -999;
140  }
141 
142  std::array<double,4> eta = { -999.0, -999.0, -999.0, -999.0 };
143  std::array<double,4> phi = { -999.0, -999.0, -999.0, -999.0 };
144  std::array<double,4> deltaEta = { -999.0, -999.0, -999.0, -999.0 };
145  std::array<double,4> deltaPhi = { -999.0, -999.0, -999.0, -999.0 };
146 
147  const EventContext& ctx = Gaudi::Hive::currentContext();
148  std::pair<std::vector<CaloSampling::CaloSample>,
149  std::vector<std::unique_ptr<Trk::Surface>>>
150  layersAndSurfaces =
151  m_emExtrapolationTool->getClusterLayerSurfaces(*cluster, *caloDDMgr);
152 
154  ->getMatchAtCalo(ctx,
155  *cluster,
156  *tp,
157  layersAndSurfaces.first,
158  layersAndSurfaces.second,
159  eta,
160  phi,
161  deltaEta,
162  deltaPhi,
164  .isSuccess()) // Perigee
165  {
166  trkMatchTrk[0] = deltaEta[1];
167  trkMatchTrk[1] = deltaEta[2];
168  trkMatchTrk[2] = deltaPhi[1];
169  trkMatchTrk[3] = deltaPhi[2];
170  }
171 
173  ->getMatchAtCalo(ctx,
174  *cluster,
175  *tp,
176  layersAndSurfaces.first,
177  layersAndSurfaces.second,
178  eta,
179  phi,
180  deltaEta,
181  deltaPhi,
183  .isSuccess()) // Last Measurement
184  {
185  trkMatchTrk[4] = deltaEta[1];
186  trkMatchTrk[5] = deltaEta[2];
187  trkMatchTrk[6] = deltaPhi[1];
188  trkMatchTrk[7] = deltaPhi[2];
189  }
190 
191  if(m_emExtrapolationTool->getMatchAtCalo ( ctx,
192  *cluster,
193  *tp,
194  layersAndSurfaces.first,
195  layersAndSurfaces.second,
196  eta,
197  phi,
198  deltaEta,
199  deltaPhi,
200  IEMExtrapolationTools::fromPerigeeRescaled).isSuccess()) //Last Measurement
201  {
202  trkMatchTrk[8] = deltaPhi[2];
203  }
204  }

◆ fillTrackDetails()

void DerivationFramework::MergedElectronDetailsDecorator::fillTrackDetails ( const xAOD::Electron el,
bool  isMC 
) const
private

Definition at line 218 of file MergedElectronDetailsDecorator.cxx.

219  {
220  std::vector<float> trkMatchTrkP_dEta1(el->nTrackParticles(),-999);
221  std::vector<float> trkMatchTrkP_dEta2(el->nTrackParticles(),-999);
222  std::vector<float> trkMatchTrkP_dPhi1(el->nTrackParticles(),-999);
223  std::vector<float> trkMatchTrkP_dPhi2(el->nTrackParticles(),-999);
224  std::vector<float> trkMatchTrkLM_dEta1(el->nTrackParticles(),-999);
225  std::vector<float> trkMatchTrkLM_dEta2(el->nTrackParticles(),-999);
226  std::vector<float> trkMatchTrkLM_dPhi1(el->nTrackParticles(),-999);
227  std::vector<float> trkMatchTrkLM_dPhi2(el->nTrackParticles(),-999);
228  std::vector<float> trkMatchTrkR_dPhi2(el->nTrackParticles(),-999);
229 
230  std::vector<float> trueMatch_dEta2(el->nTrackParticles(),-999);
231  std::vector<float> trueMatch_dPhi2(el->nTrackParticles(),-999);
232 
233  const auto *caloCluster = el->caloCluster();
234  if( caloCluster && caloCluster->pt() > m_minET ){
235  std::vector<float> trkMatch(9,-999);
236  for( unsigned int i(0); i < el->nTrackParticles(); ++i ){
237  const auto *trackParticle = el->trackParticle( i );
238  if(trackParticle){
239  fillMatchDetails( trkMatch, trackParticle, caloCluster);
240  trkMatchTrkP_dEta1[i] = trkMatch[0];
241  trkMatchTrkP_dEta2[i] = trkMatch[1];
242  trkMatchTrkP_dPhi1[i] = trkMatch[2];
243  trkMatchTrkP_dPhi2[i] = trkMatch[3];
244  trkMatchTrkLM_dEta1[i] = trkMatch[4];
245  trkMatchTrkLM_dEta2[i] = trkMatch[5];
246  trkMatchTrkLM_dPhi1[i] = trkMatch[6];
247  trkMatchTrkLM_dPhi2[i] = trkMatch[7];
248  trkMatchTrkR_dPhi2[i] = trkMatch[8];
249 
250  if(isMC){
251  fillTruthDetails( trkMatch, trackParticle, caloCluster );
252  if( trkMatch.size() == 2 ){
253  trueMatch_dEta2[i] = trkMatch[0];
254  trueMatch_dPhi2[i] = trkMatch[1];
255  }
256  }
257  }
258  }
259  }
260 
261  static const SG::Decorator<std::vector<float> > TrackMatchingP_dEta1Dec("TrackMatchingP_dEta1");
262  static const SG::Decorator<std::vector<float> > TrackMatchingP_dEta2Dec("TrackMatchingP_dEta2");
263  static const SG::Decorator<std::vector<float> > TrackMatchingP_dPhi1Dec("TrackMatchingP_dPhi1");
264  static const SG::Decorator<std::vector<float> > TrackMatchingP_dPhi2Dec("TrackMatchingP_dPhi2");
265  static const SG::Decorator<std::vector<float> > TrackMatchingLM_dEta1Dec("TrackMatchingLM_dEta1");
266  static const SG::Decorator<std::vector<float> > TrackMatchingLM_dEta2Dec("TrackMatchingLM_dEta2");
267  static const SG::Decorator<std::vector<float> > TrackMatchingLM_dPhi1Dec("TrackMatchingLM_dPhi1");
268  static const SG::Decorator<std::vector<float> > TrackMatchingLM_dPhi2Dec("TrackMatchingLM_dPhi2");
269  static const SG::Decorator<std::vector<float> > TrackMatchingR_dPhi2Dec("TrackMatchingR_dPhi2");
270  static const SG::Decorator<std::vector<float> > TrackMatchingTrue_dEta2Dec("TrackMatchingTrue_dEta2");
271  static const SG::Decorator<std::vector<float> > TrackMatchingTrue_dPhi2Dec("TrackMatchingTrue_dPhi2");
272  TrackMatchingP_dEta1Dec(*el) = trkMatchTrkP_dEta1;
273  TrackMatchingP_dEta2Dec(*el) = trkMatchTrkP_dEta2;
274  TrackMatchingP_dPhi1Dec(*el) = trkMatchTrkP_dPhi1;
275  TrackMatchingP_dPhi2Dec(*el) = trkMatchTrkP_dPhi2;
276  TrackMatchingLM_dEta1Dec(*el) = trkMatchTrkLM_dEta1;
277  TrackMatchingLM_dEta2Dec(*el) = trkMatchTrkLM_dEta2;
278  TrackMatchingLM_dPhi1Dec(*el) = trkMatchTrkLM_dPhi1;
279  TrackMatchingLM_dPhi2Dec(*el) = trkMatchTrkLM_dPhi2;
280  TrackMatchingR_dPhi2Dec(*el) = trkMatchTrkR_dPhi2;
281  TrackMatchingTrue_dEta2Dec(*el) = trueMatch_dEta2;
282  TrackMatchingTrue_dPhi2Dec(*el) = trueMatch_dPhi2;
283  }

◆ fillTruthDetails()

void DerivationFramework::MergedElectronDetailsDecorator::fillTruthDetails ( std::vector< float > &  trkMatchTrk,
const xAOD::TrackParticle tp,
const xAOD::CaloCluster cluster 
) const
private

Definition at line 99 of file MergedElectronDetailsDecorator.cxx.

101  {
102 
103  trkMatchTrk.clear();
105 
106  if( !truthPart || !truthPart->hasProdVtx() )
107  return;
108 
109  const auto *prodVtx = truthPart->prodVtx();
110 
111  Amg::Vector3D pos( prodVtx->x(), prodVtx->y(), prodVtx->z() );
112  Amg::Vector3D mom( truthPart->px(), truthPart->py(), truthPart->pz() );
113 
114  Trk::CurvilinearParameters truthTP( pos, mom, truthPart->charge() );
115 
116  const EventContext& ctx = Gaudi::Hive::currentContext();
117  float etaAtCalo, phiAtCalo;
118  if( m_emExtrapolationTool->getEtaPhiAtCalo ( ctx,
119  &truthTP,
120  &etaAtCalo,
121  &phiAtCalo) ){
122  trkMatchTrk.push_back( cluster->etaBE(2) - etaAtCalo );
123  trkMatchTrk.push_back( P4Helpers::deltaPhi(cluster->phiBE(2), phiAtCalo) );
124  }
125 
126  return;
127 
128  }

◆ fillVertexDetails()

void DerivationFramework::MergedElectronDetailsDecorator::fillVertexDetails ( const xAOD::Electron el) const
private

Definition at line 314 of file MergedElectronDetailsDecorator.cxx.

315  {
316  const EventContext& ctx = Gaudi::Hive::currentContext();
317  const auto *caloCluster = el->caloCluster();
318 
319  float vtxR = -999;
320  float vtxZ = -999;
321  float vtxM = -999;
322  float vtxP = -999;
323  int vtxTrkParticleIndex1 = -999;
324  int vtxTrkParticleIndex2 = -999;
325  float vtxTrkParticle1_dEta2 = -999;
326  float vtxTrkParticle1_dPhi2 = -999;
327  float vtxTrkParticle2_dEta2 = -999;
328  float vtxTrkParticle2_dPhi2 = -999;
329  float vtxRerr = -999;
330  float vtxZerr = -999;
331  float vtxMerr = -999;
332  float vtxPerr = -999;
333  float vtxChi2 = -999;
334  int vtxNdof = -999;
335  float vtxdEta = -999;
336  float vtxdPhi = -999;
337  float vtxE = -999;
338  float vtxPhi = -999;
339  float vtxEta = -999;
340 
341  if( caloCluster && caloCluster->pt() > m_minET ){
342  const xAOD::TrackParticle* trk1 = nullptr;
343  const xAOD::TrackParticle* trk2 = nullptr;
344  int trkIndex1 = -999;
345  int trkIndex2 = -999;
346  for( unsigned int i(0); i < el->nTrackParticles(); ++i ){
347  const auto *trackParticle = el->trackParticle( i );
348  if( nSiHits(trackParticle) >= 7 && ElectronSelectorHelpers::passBLayerRequirement(*trackParticle) ) {
349  if ( trk1 == nullptr ){
350  trk1 = trackParticle;
351  trkIndex1 = i;
352  } else if( trk2 == nullptr ){
353  if( trk1->charge() == trackParticle->charge() )
354  continue;
355  trk2 = trackParticle;
356  trkIndex2 = i;
357  break;
358  }
359  }
360  }
361  if( trk2 != nullptr){
362  // fit vertex
363 
364  // Take the initial guess as the first tracks global position
366  Amg::Vector3D startingPoint = perigeeParameters.position();
367 
368  std::vector<const xAOD::TrackParticle*> trksToFit;
369  trksToFit.push_back( trk1 );
370  trksToFit.push_back( trk2 );
371  vtxTrkParticleIndex1 = trkIndex1;
372  vtxTrkParticleIndex2 = trkIndex2;
373 
374  std::unique_ptr<xAOD::Vertex> myVertex( m_VertexFitter->fit( trksToFit, startingPoint ) );
375 
376  if(myVertex){
377 
378  vtxR = m_V0Tools->rxy( myVertex.get() );
379  vtxRerr = m_V0Tools->rxyError( myVertex.get() );
380  vtxZ = myVertex->z();
381  vtxZerr = myVertex->covariancePosition()(2,2) > 0 ? sqrt( myVertex->covariancePosition()(2,2) ): myVertex->covariancePosition()(2,2);
382 
383  std::vector<double> masses = { 0.511e-3, 0.511e-3 };
384  vtxM = m_V0Tools->invariantMass( myVertex.get(), masses);
385  vtxMerr = m_V0Tools->invariantMassError( myVertex.get(), masses);
386 
387  vtxP = m_V0Tools->pT( myVertex.get() );
388  vtxPerr = m_V0Tools->pTError( myVertex.get() );
389 
390  vtxChi2 = myVertex->chiSquared();
391  vtxNdof = myVertex->numberDoF();
392 
393  m_emExtrapolationTool->getEtaPhiAtCalo( ctx, myVertex.get(), &vtxdEta, &vtxdPhi);
394 
395  vtxdPhi = P4Helpers::deltaPhi( vtxdPhi, caloCluster->phiBE(2) );
396  vtxdEta -= caloCluster->etaBE(2);
397 
398  xAOD::TrackParticle::FourMom_t vertex4P = m_V0Tools->V04Momentum(myVertex.get(), 0.511);
399  vtxE = vertex4P.E();
400  vtxPhi = vertex4P.Phi();
401  vtxEta = vertex4P.Eta();
402  double momentumScaleFactor = caloCluster->e() / vtxE;
403 
404  const auto& perigeeParameters = trk1->perigeeParameters();
405  Amg::Vector3D pos = perigeeParameters.position();
406  Amg::Vector3D mom = perigeeParameters.momentum();
407  mom *= momentumScaleFactor;
408  Trk::CurvilinearParameters scaledTrk( pos, mom, trk1->charge() );
409 
410  float etaAtCalo, phiAtCalo;
411  if( m_emExtrapolationTool->getEtaPhiAtCalo (ctx,
412  &scaledTrk,
413  &etaAtCalo,
414  &phiAtCalo) ){
415  vtxTrkParticle1_dEta2 = caloCluster->etaBE(2) - etaAtCalo;
416  vtxTrkParticle1_dPhi2 = P4Helpers::deltaPhi(caloCluster->phiBE(2), phiAtCalo) ;
417  }
418 
419  const auto& perigeeParameters2 = trk2->perigeeParameters();
420  pos = perigeeParameters2.position();
421  mom = perigeeParameters2.momentum();
422  mom *= momentumScaleFactor;
423  scaledTrk = Trk::CurvilinearParameters( pos, mom, trk2->charge() );
424 
425  if( m_emExtrapolationTool->getEtaPhiAtCalo (ctx,
426  &scaledTrk,
427  &etaAtCalo,
428  &phiAtCalo) ){
429  vtxTrkParticle2_dEta2 = caloCluster->etaBE(2) - etaAtCalo;
430  vtxTrkParticle2_dPhi2 = P4Helpers::deltaPhi(caloCluster->phiBE(2), phiAtCalo) ;
431  }
432 
433  } else {
434  vtxChi2 = 0;
435  vtxNdof = 0;
436  }
437  }
438  }
439 
440  static const SG::Decorator<float> vtxRDec("vtxR");
441  static const SG::Decorator<float> vtxRerrDec("vtxRerr");
442  static const SG::Decorator<float> vtxZDec("vtxZ");
443  static const SG::Decorator<float> vtxZerrDec("vtxZerr");
444  static const SG::Decorator<float> vtxMDec("vtxM");
445  static const SG::Decorator<float> vtxMerrDec("vtxMerr");
446  static const SG::Decorator<float> vtxPtDec("vtxPt");
447  static const SG::Decorator<float> vtxPterrDec("vtxPterr");
448  static const SG::Decorator<float> vtxEDec("vtxE");
449  static const SG::Decorator<float> vtxEtaDec("vtxEta");
450  static const SG::Decorator<float> vtxPhiDec("vtxPhi");
451  static const SG::Decorator<int> vtxTrkParticleIndex1Dec("vtxTrkParticleIndex1");
452  static const SG::Decorator<int> vtxTrkParticleIndex2Dec("vtxTrkParticleIndex2");
453  static const SG::Decorator<float> vtxTrkParticle1_dPhi2Dec("vtxTrkParticle1_dPhi2");
454  static const SG::Decorator<float> vtxTrkParticle1_dEta2Dec("vtxTrkParticle1_dEta2");
455  static const SG::Decorator<float> vtxTrkParticle2_dPhi2Dec("vtxTrkParticle2_dPhi2");
456  static const SG::Decorator<float> vtxTrkParticle2_dEta2Dec("vtxTrkParticle2_dEta2");
457  static const SG::Decorator<float> vtxChi2Dec("vtxChi2");
458  static const SG::Decorator<int> vtxNdofDec("vtxNdof");
459  static const SG::Decorator<float> vtxdEtaDec("vtxdEta");
460  static const SG::Decorator<float> vtxdPhiDec("vtxdPhi");
461 
462  vtxRDec(*el) = vtxR;
463  vtxRerrDec(*el) = vtxRerr;
464  vtxZDec(*el) = vtxZ;
465  vtxZerrDec(*el) = vtxZerr;
466  vtxMDec(*el) = vtxM;
467  vtxMerrDec(*el) = vtxMerr;
468  vtxPtDec(*el) = vtxP;
469  vtxPterrDec(*el)= vtxPerr;
470  vtxEDec(*el) = vtxE;
471  vtxEtaDec(*el) = vtxEta;
472  vtxPhiDec(*el) = vtxPhi;
473  vtxTrkParticleIndex1Dec(*el) = vtxTrkParticleIndex1;
474  vtxTrkParticleIndex2Dec(*el) = vtxTrkParticleIndex2;
475  vtxTrkParticle1_dPhi2Dec(*el) = vtxTrkParticle1_dPhi2;
476  vtxTrkParticle1_dEta2Dec(*el) = vtxTrkParticle1_dEta2;
477  vtxTrkParticle2_dPhi2Dec(*el) = vtxTrkParticle2_dPhi2;
478  vtxTrkParticle2_dEta2Dec(*el) = vtxTrkParticle2_dEta2;
479  vtxChi2Dec(*el) = vtxChi2;
480  vtxNdofDec(*el) = vtxNdof;
481  vtxdEtaDec(*el) = vtxdEta;
482  vtxdPhiDec(*el) = vtxdPhi;
483  }

◆ finalize()

StatusCode DerivationFramework::MergedElectronDetailsDecorator::finalize ( )

Definition at line 71 of file MergedElectronDetailsDecorator.cxx.

71  {
72  return StatusCode::SUCCESS;
73  }

◆ initialize()

StatusCode DerivationFramework::MergedElectronDetailsDecorator::initialize ( )

Definition at line 42 of file MergedElectronDetailsDecorator.cxx.

42  {
43 
44  ATH_MSG_INFO("Initialize " );
45 
46  if (m_emExtrapolationTool.retrieve().isFailure()) {
47  ATH_MSG_FATAL("Failed to retrieve tool: " << m_emExtrapolationTool);
48  return StatusCode::FAILURE;
49  }
50  ATH_MSG_INFO("Retrieved tool: " << m_emExtrapolationTool);
51 
52  if (m_VertexFitter.retrieve().isFailure()) {
53  ATH_MSG_FATAL("Failed to retrieve tool: " << m_VertexFitter);
54  return StatusCode::FAILURE;
55  }
56  ATH_MSG_INFO("Retrieved tool: " << m_VertexFitter);
57 
58  if (m_V0Tools.retrieve().isFailure()) {
59  ATH_MSG_FATAL("Failed to retrieve tool: " << m_V0Tools);
60  return StatusCode::FAILURE;
61  }
62  ATH_MSG_INFO("Retrieved tool: " << m_V0Tools);
63 
65 
68  return StatusCode::SUCCESS;
69  }

◆ nSiHits()

int DerivationFramework::MergedElectronDetailsDecorator::nSiHits ( const xAOD::TrackParticle tp)
staticprivate

Definition at line 207 of file MergedElectronDetailsDecorator.cxx.

208  {
209  uint8_t dummy(-1);
210  int nPix = tp->summaryValue( dummy, xAOD::numberOfPixelHits )? dummy : 0;
211  int nPix_DS = tp->summaryValue( dummy, xAOD::numberOfPixelDeadSensors )? dummy : 0;
212  int nSCT = tp->summaryValue( dummy, xAOD::numberOfSCTHits )? dummy : 0;
213  int nSCT_DS = tp->summaryValue( dummy, xAOD::numberOfSCTDeadSensors )? dummy : 0;
214  return nPix + nPix_DS + nSCT + nSCT_DS;
215  }

Member Data Documentation

◆ m_caloMgrKey

SG::ReadCondHandleKey<CaloDetDescrManager> DerivationFramework::MergedElectronDetailsDecorator::m_caloMgrKey
private
Initial value:
{
this,
"CaloDetDescrManager",
"CaloDetDescrManager"
}

Definition at line 69 of file MergedElectronDetailsDecorator.h.

◆ m_electronKey

SG::ReadHandleKey<xAOD::ElectronContainer> DerivationFramework::MergedElectronDetailsDecorator::m_electronKey
private
Initial value:
{ this,
"ElectronKey",
"Electrons",
"" }

Definition at line 65 of file MergedElectronDetailsDecorator.h.

◆ m_emExtrapolationTool

ToolHandle<IEMExtrapolationTools> DerivationFramework::MergedElectronDetailsDecorator::m_emExtrapolationTool
private

Definition at line 55 of file MergedElectronDetailsDecorator.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> DerivationFramework::MergedElectronDetailsDecorator::m_eventInfoKey
private
Initial value:
{ this,
"EventInfoKey",
"EventInfo",
"" }

Definition at line 61 of file MergedElectronDetailsDecorator.h.

◆ m_minET

float DerivationFramework::MergedElectronDetailsDecorator::m_minET
private

Definition at line 59 of file MergedElectronDetailsDecorator.h.

◆ m_V0Tools

ToolHandle<Trk::V0Tools> DerivationFramework::MergedElectronDetailsDecorator::m_V0Tools
private

Definition at line 57 of file MergedElectronDetailsDecorator.h.

◆ m_VertexFitter

ToolHandle<Trk::IVertexFitter> DerivationFramework::MergedElectronDetailsDecorator::m_VertexFitter
private

Definition at line 56 of file MergedElectronDetailsDecorator.h.


The documentation for this class was generated from the following files:
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DerivationFramework::MergedElectronDetailsDecorator::m_VertexFitter
ToolHandle< Trk::IVertexFitter > m_VertexFitter
Definition: MergedElectronDetailsDecorator.h:56
perigeeParameters
Definition: ExtrapolatorComparisonTest.h:43
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
xAOD::TruthParticle_v1::pz
float pz() const
The z component of the particle's momentum.
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:150
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:160
Trk::CurvilinearParameters
CurvilinearParametersT< TrackParametersDim, Charged, PlaneSurface > CurvilinearParameters
Definition: Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:29
xAOD::TrackParticle_v1::FourMom_t
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
Definition: TrackParticle_v1.h:72
DerivationFramework::MergedElectronDetailsDecorator::m_electronKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_electronKey
Definition: MergedElectronDetailsDecorator.h:65
xAOD::TruthParticle_v1::px
float px() const
The x component of the particle's momentum.
ParticleTest.tp
tp
Definition: ParticleTest.py:25
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
xAOD::TruthParticle_v1::py
float py() const
The y component of the particle's momentum.
IEMExtrapolationTools::fromPerigee
@ fromPerigee
from the perigee of TrackParticle
Definition: IEMExtrapolationTools.h:37
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
ElectronSelectorHelpers::passBLayerRequirement
bool passBLayerRequirement(const xAOD::TrackParticle &tp)
return true if effective number of BL hits + outliers is at least one
Definition: ElectronSelectorHelpers.cxx:59
DerivationFramework::MergedElectronDetailsDecorator::m_V0Tools
ToolHandle< Trk::V0Tools > m_V0Tools
Definition: MergedElectronDetailsDecorator.h:57
DerivationFramework::MergedElectronDetailsDecorator::m_emExtrapolationTool
ToolHandle< IEMExtrapolationTools > m_emExtrapolationTool
Definition: MergedElectronDetailsDecorator.h:55
xAOD::TrackParticle_v1::perigeeParameters
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Definition: TrackParticle_v1.cxx:485
P4Helpers::deltaPhi
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
Definition: P4Helpers.h:34
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ParticleGun_EoverP_Config.mom
mom
Definition: ParticleGun_EoverP_Config.py:63
columnar::ContainerId::cluster
@ cluster
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
P4Helpers::deltaEta
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition: P4Helpers.h:66
lumiFormat.i
int i
Definition: lumiFormat.py:85
beamspotman.n
n
Definition: beamspotman.py:731
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
xAOD::TruthParticle_v1::hasProdVtx
bool hasProdVtx() const
Check for a production vertex on this particle.
Definition: TruthParticle_v1.cxx:74
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
python.xAODType.dummy
dummy
Definition: xAODType.py:4
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::MergedElectronDetailsDecorator::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: MergedElectronDetailsDecorator.h:61
IEMExtrapolationTools::fromPerigeeRescaled
@ fromPerigeeRescaled
from the perigee of TrackParticle recaled by Ecluster
Definition: IEMExtrapolationTools.h:39
DerivationFramework::MergedElectronDetailsDecorator::m_minET
float m_minET
Definition: MergedElectronDetailsDecorator.h:59
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
DerivationFramework::MergedElectronDetailsDecorator::fillTruthDetails
void fillTruthDetails(std::vector< float > &trkMatchTrk, const xAOD::TrackParticle *tp, const xAOD::CaloCluster *cluster) const
Definition: MergedElectronDetailsDecorator.cxx:99
DerivationFramework::MergedElectronDetailsDecorator::nSiHits
static int nSiHits(const xAOD::TrackParticle *tp)
Definition: MergedElectronDetailsDecorator.cxx:207
xAOD::TruthParticle_v1::prodVtx
const TruthVertex_v1 * prodVtx() const
The production vertex of this particle.
Definition: TruthParticle_v1.cxx:80
DerivationFramework::MergedElectronDetailsDecorator::fillTrackDetails
void fillTrackDetails(const xAOD::Electron *el, bool isMC) const
Definition: MergedElectronDetailsDecorator.cxx:218
xAOD::TruthHelpers::getTruthParticle
const xAOD::TruthParticle * getTruthParticle(const xAOD::IParticle &p)
Return the truthParticle associated to the given IParticle (if any)
Definition: xAODTruthHelpers.cxx:25
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
DerivationFramework::MergedElectronDetailsDecorator::fillVertexDetails
void fillVertexDetails(const xAOD::Electron *el) const
Definition: MergedElectronDetailsDecorator.cxx:314
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
columnar::ContainerId::eventInfo
@ eventInfo
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
CaloDetDescrManager
This class provides the client interface for accessing the detector description information common to...
Definition: CaloDetDescrManager.h:473
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:274
DerivationFramework::MergedElectronDetailsDecorator::fillClusterDetails
static void fillClusterDetails(const xAOD::Electron *el)
Definition: MergedElectronDetailsDecorator.cxx:285
EventInfoRead.isMC
isMC
Definition: EventInfoRead.py:11
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:267
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
DerivationFramework::MergedElectronDetailsDecorator::m_caloMgrKey
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
Definition: MergedElectronDetailsDecorator.h:69
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
xAOD::TruthParticle_v1::charge
double charge() const
Physical charge.
IEMExtrapolationTools::fromLastMeasurement
@ fromLastMeasurement
from the last measurement of TrackParticle
Definition: IEMExtrapolationTools.h:35
SUSY_SimplifiedModel_PreInclude.masses
dictionary masses
Definition: SUSY_SimplifiedModel_PreInclude.py:7
DerivationFramework::MergedElectronDetailsDecorator::fillMatchDetails
void fillMatchDetails(std::vector< float > &trkMatchTrk, const xAOD::TrackParticle *tp, const xAOD::CaloCluster *cluster) const
Definition: MergedElectronDetailsDecorator.cxx:130