ATLAS Offline Software
eflowRecTrack.cxx
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  * eflowRecTrack.cxx
7  *
8  * Created on: 30.09.2013
9  * Author: tlodd
10  */
11 
12 #include "eflowRec/eflowRecTrack.h"
15 
16 #include "GaudiKernel/IMessageSvc.h"
17 #include "GaudiKernel/ISvcLocator.h"
18 #include "GaudiKernel/StatusCode.h"
19 
21  const ElementLink<xAOD::TrackParticleContainer>& trackElemLink,
22  const ToolHandle<eflowTrackExtrapolatorBaseAlgTool>& theTrackExtrapolatorTool) :
23  m_trackId(-1), m_trackElemLink(trackElemLink), m_track(*trackElemLink), m_type(5),
24  m_pull15(0.0),
25  m_layerHED(-1),
26  m_eExpect(1.0),
27  m_varEExpect(0.0),
28  m_isInDenseEnvironment(false),
29  m_isSubtracted(false),
30  m_isRecovered(false),
31  m_hasBin(true),
32  m_trackCaloPoints(theTrackExtrapolatorTool->execute(m_track))
33 {
34  ISvcLocator* svcLoc = Gaudi::svcLocator();
35  StatusCode status = svcLoc->service( "MessageSvc", m_msgSvc );
36  if ( status.isSuccess( ) ) m_mlog = std::make_unique<MsgStream>(m_msgSvc,"eflowRecTrack");
37  else m_mlog = nullptr;
38 }
39 
41  : m_trackId (eflowRecTrack.m_trackId),
42  m_trackElemLink (eflowRecTrack.m_trackElemLink),
43  m_track (*m_trackElemLink),
45  m_pull15 (eflowRecTrack.m_pull15),
46  m_layerHED (eflowRecTrack.m_layerHED),
47  m_eExpect (eflowRecTrack.m_eExpect),
48  m_varEExpect (eflowRecTrack.m_varEExpect),
49  m_isInDenseEnvironment (eflowRecTrack.m_isInDenseEnvironment),
50  m_isSubtracted (eflowRecTrack.m_isSubtracted),
51  m_isRecovered (eflowRecTrack.m_isRecovered),
52  m_hasBin (eflowRecTrack.m_hasBin),
53  m_trackCaloPoints (std::make_unique<eflowTrackCaloPoints>(*eflowRecTrack.m_trackCaloPoints))
54 {
55  ISvcLocator* svcLoc = Gaudi::svcLocator();
56  StatusCode status = svcLoc->service( "MessageSvc", m_msgSvc );
57  if ( status.isSuccess( ) ) m_mlog = std::make_unique<MsgStream>(m_msgSvc,"eflowRecTrack");
58  else m_mlog = nullptr;
59 }
60 
62  if (this == &originalEflowRecTrack) return *this;
63  //if not assigning to self, then we copy the data to the new object
64  else{
65  m_trackId = originalEflowRecTrack.m_trackId;
66  m_trackElemLink = originalEflowRecTrack.m_trackElemLink;
68  m_type = originalEflowRecTrack.m_type;
69  m_pull15 = originalEflowRecTrack.m_pull15;
70  m_eExpect = originalEflowRecTrack.m_eExpect;
71  m_varEExpect = originalEflowRecTrack.m_varEExpect;
72  m_isInDenseEnvironment = originalEflowRecTrack.m_isInDenseEnvironment;
73  m_isSubtracted = originalEflowRecTrack.m_isSubtracted;
74  m_isRecovered = originalEflowRecTrack.m_isRecovered;
75  m_hasBin = originalEflowRecTrack.m_hasBin;
76  m_trackCaloPoints = std::make_unique<eflowTrackCaloPoints>(*originalEflowRecTrack.m_trackCaloPoints);
77  ISvcLocator* svcLoc = Gaudi::svcLocator();
78  StatusCode status = svcLoc->service( "MessageSvc", m_msgSvc );
79  if ( status.isSuccess( ) ) m_mlog = std::make_unique<MsgStream>(m_msgSvc,"eflowRecTrack");
80  else m_mlog = nullptr;
81  m_layerHED = originalEflowRecTrack.m_layerHED;
82  return *this;
83  }//if not assigning to self, then we have copied the data to the new object
84 }
85 
87 
88 void eflowRecTrack::setCaloDepthArray(const double* depthArray) {
89  m_caloDepthArray.assign(depthArray, depthArray + eflowDepthCalculator::NDepth() + 1);
90 }
91 
92 const std::vector<eflowTrackClusterLink*>* eflowRecTrack::getAlternativeClusterMatches(const std::string& key) const {
93 
94  std::map<std::string,std::vector<eflowTrackClusterLink*> >::const_iterator thisIterator = m_alternativeClusterMatches.find(key);
95  if (thisIterator != m_alternativeClusterMatches.end()) return &m_alternativeClusterMatches.at(key);
96  else return nullptr;
97 
98  return nullptr;
99 
100 }
eflowRecTrack::m_track
const xAOD::TrackParticle * m_track
Definition: eflowRecTrack.h:129
eflowRecTrack::m_mlog
std::unique_ptr< MsgStream > m_mlog
Definition: eflowRecTrack.h:157
eflowRecTrack::m_isSubtracted
bool m_isSubtracted
Definition: eflowRecTrack.h:142
eflowTrackCaloPoints
This class stores a map of calorimeter layers and track parameters (the result of the track extrapola...
Definition: eflowTrackCaloPoints.h:30
eflowRecTrack::getAlternativeClusterMatches
const std::vector< eflowTrackClusterLink * > * getAlternativeClusterMatches(const std::string &key) const
Definition: eflowRecTrack.cxx:92
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
eflowRecTrack::setCaloDepthArray
void setCaloDepthArray(const double *depthArray)
Definition: eflowRecTrack.cxx:88
eflowRecTrack::m_varEExpect
double m_varEExpect
Definition: eflowRecTrack.h:139
eflowRecTrack::m_type
int m_type
Definition: eflowRecTrack.h:130
eflowRecTrack::m_trackElemLink
ElementLink< xAOD::TrackParticleContainer > m_trackElemLink
Definition: eflowRecTrack.h:128
eflowRecTrack::m_eExpect
double m_eExpect
Definition: eflowRecTrack.h:138
eflowRecTrack::m_hasBin
bool m_hasBin
Definition: eflowRecTrack.h:145
LArG4FSStartPointFilterLegacy.execute
execute
Definition: LArG4FSStartPointFilterLegacy.py:20
eflowRecTrack
This class extends the information about a xAOD::Track.
Definition: eflowRecTrack.h:45
m_type
TokenType m_type
the type
Definition: TProperty.cxx:44
eflowRecTrack.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
eflowRecTrack::m_layerHED
int m_layerHED
Definition: eflowRecTrack.h:133
eflowRecTrack::~eflowRecTrack
virtual ~eflowRecTrack()
eflowDepthCalculator::NDepth
static int NDepth()
Definition: eflowDepthCalculator.h:42
eflowRecTrack::operator=
eflowRecTrack & operator=(const eflowRecTrack &originalEflowRecTrack)
Definition: eflowRecTrack.cxx:61
eflowDepthCalculator.h
eflowRecTrack::m_msgSvc
IMessageSvc * m_msgSvc
Definition: eflowRecTrack.h:156
eflowRecTrack::m_caloDepthArray
std::vector< double > m_caloDepthArray
Definition: eflowRecTrack.h:147
eflowRecTrack::m_isRecovered
bool m_isRecovered
Tells us whether this track underwent split shower revovery.
Definition: eflowRecTrack.h:144
eflowRecTrack::m_pull15
double m_pull15
Definition: eflowRecTrack.h:131
eflowRecTrack::m_alternativeClusterMatches
std::map< std::string, std::vector< eflowTrackClusterLink * > > m_alternativeClusterMatches
Definition: eflowRecTrack.h:154
eflowTrackExtrapolatorBaseAlgTool.h
merge.status
status
Definition: merge.py:17
eflowRecTrack::eflowRecTrack
eflowRecTrack(const ElementLink< xAOD::TrackParticleContainer > &trackElemLink, const ToolHandle< eflowTrackExtrapolatorBaseAlgTool > &theTrackExtrapolatorTool)
Definition: eflowRecTrack.cxx:20
eflowRecTrack::m_isInDenseEnvironment
bool m_isInDenseEnvironment
Definition: eflowRecTrack.h:141
eflowRecTrack::m_trackCaloPoints
std::unique_ptr< eflowTrackCaloPoints > m_trackCaloPoints
Definition: eflowRecTrack.h:149
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
eflowRecTrack::m_trackId
int m_trackId
Definition: eflowRecTrack.h:127