Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Private Types | Private Attributes | List of all members
DerivationFramework::TrackToVertexWrapper Class Reference

#include <TrackToVertexWrapper.h>

Inheritance diagram for DerivationFramework::TrackToVertexWrapper:
Collaboration diagram for DerivationFramework::TrackToVertexWrapper:

Public Member Functions

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

Private Types

enum  ETrackFloatDecor {
  kdecnD0Decor, kdecnZ0Decor, kdecnZ0SinThetaDecor, kdecnD0ErrDecor,
  kdecnZ0ErrDecor, kdecnZ0SinThetaErrDecor, kdecnPVD0ErrDecor, kdecnPVZ0ErrDecor,
  kdecnPVZ0SinThetaErrDecor, kdecn_b_D0Decor, kdecn_b_Z0Decor, kdecn_b_Z0SinThetaDecor,
  kdecn_b_D0ErrDecor, kdecn_b_Z0ErrDecor, kdecn_b_Z0SinThetaErrDecor, kdecn_b_PVD0ErrDecor,
  kdecn_b_PVZ0ErrDecor, kdecn_b_PVZ0SinThetaErrDecor, kNFloatDecor
}
 

Private Attributes

ToolHandle< Trk::ITrackToVertexIPEstimatorm_tool {this, "TrackToVertexIPEstimator", "Trk::TrackToVertexIPEstimator", ""}
 
Gaudi::Property< std::string > m_sgName {this, "DecorationPrefix", "", ""}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_containerName {this, "ContainerName", "", ""}
 
SG::ReadHandleKey< xAOD::VertexContainerm_vertexKey {this, "VertexContainer", "PrimaryVertices", "primary vertex container"}
 
std::vector< SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > > m_trackFloatDecorKeys
 

Detailed Description

Definition at line 26 of file TrackToVertexWrapper.h.

Member Enumeration Documentation

◆ ETrackFloatDecor

Enumerator
kdecnD0Decor 
kdecnZ0Decor 
kdecnZ0SinThetaDecor 
kdecnD0ErrDecor 
kdecnZ0ErrDecor 
kdecnZ0SinThetaErrDecor 
kdecnPVD0ErrDecor 
kdecnPVZ0ErrDecor 
kdecnPVZ0SinThetaErrDecor 
kdecn_b_D0Decor 
kdecn_b_Z0Decor 
kdecn_b_Z0SinThetaDecor 
kdecn_b_D0ErrDecor 
kdecn_b_Z0ErrDecor 
kdecn_b_Z0SinThetaErrDecor 
kdecn_b_PVD0ErrDecor 
kdecn_b_PVZ0ErrDecor 
kdecn_b_PVZ0SinThetaErrDecor 
kNFloatDecor 

Definition at line 44 of file TrackToVertexWrapper.h.

Constructor & Destructor Documentation

◆ TrackToVertexWrapper()

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

Definition at line 20 of file TrackToVertexWrapper.cxx.

22  :
23  base_class(t,n,p)
24  {
25  }

Member Function Documentation

◆ addBranches()

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

Definition at line 71 of file TrackToVertexWrapper.cxx.

72  {
73  const EventContext& ctx = Gaudi::Hive::currentContext();
74 
75  // retrieve track container
77  if( ! tracks.isValid() ) {
78  ATH_MSG_ERROR ("Couldn't retrieve TrackParticles with key: " << m_containerName.key() );
79  return StatusCode::FAILURE;
80  }
82  if ( !vertices.isValid() )
83  {
84  ATH_MSG_ERROR ("Couldn't retrieve Vertices with key: " << m_vertexKey.key());
85  return StatusCode::FAILURE;
86  }
87 
88  std::vector<SG::WriteDecorHandle<xAOD::TrackParticleContainer,float> >
89  track_decorators = createDecorators<xAOD::TrackParticleContainer,float>(m_trackFloatDecorKeys,ctx);
90  // Run tool for each element and calculate the impact parameters/errors
91  for (const auto *trItr : *tracks) {
92  std::unique_ptr<Trk::ImpactParametersAndSigma> iPandSigma;
93  std::unique_ptr<Trk::ImpactParametersAndSigma> iPandSigmaBiased;
94  const xAOD::Vertex* foundVertex { nullptr };
95  for (const auto *const vx : *vertices) {
96  for (const auto& tpLink : vx->trackParticleLinks()) {
97  if (*tpLink == trItr) {
98  foundVertex = vx;
99  break;
100  }
101  }
102  if (foundVertex) break;
103  }
104  if ( foundVertex ) {
105  iPandSigma= m_tool->estimate(trItr,foundVertex,true);
106  iPandSigmaBiased = m_tool->estimate(trItr,foundVertex,false);
107  if( !iPandSigma ) ATH_MSG_WARNING ("trackToVertexIPEstimator failed !");
108  if( !iPandSigmaBiased ) ATH_MSG_WARNING ("trackToVertexIPEstimator biased IP failed !");
109  }
110  else {
111  ATH_MSG_DEBUG("No vertex associated to the track. Skipping it.");
112  }
113 
114  // Do the decoration for each track
115  if (iPandSigma) {
116  track_decorators[kdecnD0Decor]( *trItr ) = iPandSigma->IPd0;
117  track_decorators[kdecnZ0Decor]( *trItr ) = iPandSigma->IPz0;
118  track_decorators[kdecnZ0SinThetaDecor]( *trItr ) = iPandSigma->IPz0SinTheta;
119  track_decorators[kdecnD0ErrDecor]( *trItr ) = iPandSigma->sigmad0;
120  track_decorators[kdecnZ0ErrDecor]( *trItr ) = iPandSigma->sigmaz0;
121  track_decorators[kdecnZ0SinThetaErrDecor]( *trItr ) = iPandSigma->sigmaz0SinTheta;
122  track_decorators[kdecnPVD0ErrDecor] (*trItr ) = iPandSigma->PVsigmad0;
123  track_decorators[kdecnPVZ0ErrDecor] (*trItr ) = iPandSigma->PVsigmaz0;
124  track_decorators[kdecnPVZ0SinThetaErrDecor] (*trItr ) = iPandSigma->PVsigmaz0SinTheta;
125  }
126  else {
127  track_decorators[kdecnD0Decor]( *trItr ) = 999.;
128  track_decorators[kdecnZ0Decor]( *trItr ) = 999.;
129  track_decorators[kdecnZ0SinThetaDecor]( *trItr ) = 999.;
130  track_decorators[kdecnD0ErrDecor]( *trItr ) = 999.;
131  track_decorators[kdecnZ0ErrDecor]( *trItr ) = 999.;
132  track_decorators[kdecnZ0SinThetaErrDecor]( *trItr ) = 999.;
133  track_decorators[kdecnPVD0ErrDecor] (*trItr ) = 999.;
134  track_decorators[kdecnPVZ0ErrDecor] (*trItr ) = 999.;
135  track_decorators[kdecnPVZ0SinThetaErrDecor] (*trItr ) = 999.;
136  }
137 
138  if (iPandSigmaBiased) {
139  track_decorators[kdecn_b_D0Decor]( *trItr ) = iPandSigmaBiased->IPd0;
140  track_decorators[kdecn_b_Z0Decor]( *trItr ) = iPandSigmaBiased->IPz0;
141  track_decorators[kdecn_b_Z0SinThetaDecor]( *trItr ) = iPandSigmaBiased->IPz0SinTheta;
142  track_decorators[kdecn_b_D0ErrDecor]( *trItr ) = iPandSigmaBiased->sigmad0;
143  track_decorators[kdecn_b_Z0ErrDecor]( *trItr ) = iPandSigmaBiased->sigmaz0;
144  track_decorators[kdecn_b_Z0SinThetaErrDecor]( *trItr ) = iPandSigmaBiased->sigmaz0SinTheta;
145  track_decorators[kdecn_b_PVD0ErrDecor] (*trItr ) = iPandSigmaBiased->PVsigmad0;
146  track_decorators[kdecn_b_PVZ0ErrDecor] (*trItr ) = iPandSigmaBiased->PVsigmaz0;
147  track_decorators[kdecn_b_PVZ0SinThetaErrDecor] (*trItr ) = iPandSigmaBiased->PVsigmaz0SinTheta;
148  }
149  else {
150  track_decorators[kdecn_b_D0Decor]( *trItr ) = 999.;
151  track_decorators[kdecn_b_Z0Decor]( *trItr ) = 999.;
152  track_decorators[kdecn_b_Z0SinThetaDecor]( *trItr ) = 999.;
153  track_decorators[kdecn_b_D0ErrDecor]( *trItr ) = 999.;
154  track_decorators[kdecn_b_Z0ErrDecor]( *trItr ) = 999.;
155  track_decorators[kdecn_b_Z0SinThetaErrDecor]( *trItr ) = 999.;
156  track_decorators[kdecn_b_PVD0ErrDecor] (*trItr ) = 999.;
157  track_decorators[kdecn_b_PVZ0ErrDecor] (*trItr ) = 999.;
158  track_decorators[kdecn_b_PVZ0SinThetaErrDecor] (*trItr ) = 999.;
159  }
160  } // end of loop over tracks
161 
162  return StatusCode::SUCCESS;
163  }

◆ finalize()

StatusCode DerivationFramework::TrackToVertexWrapper::finalize ( )

Definition at line 66 of file TrackToVertexWrapper.cxx.

67  {
68  return StatusCode::SUCCESS;
69  }

◆ initialize()

StatusCode DerivationFramework::TrackToVertexWrapper::initialize ( )

Definition at line 27 of file TrackToVertexWrapper.cxx.

28  {
29  if (m_sgName.empty()) {
30  ATH_MSG_ERROR("No decoration prefix name provided for the output of TracktoVertexWrapper!");
31  return StatusCode::FAILURE;
32  }
33  if (m_containerName.key().empty()) {
34  ATH_MSG_ERROR("No TrackParticle collection provided for TracktoVertexWrapper!");
35  return StatusCode::FAILURE;
36  }
38  ATH_CHECK(m_tool.retrieve());
39  ATH_CHECK(m_vertexKey.initialize());
40  {
41  std::vector<std::string> names;
42  names.resize(kNFloatDecor);
43  names[kdecnD0Decor] = "unbiased_d0";
44  names[kdecnZ0Decor] = "unbiased_z0";
45  names[kdecnZ0SinThetaDecor] = "unbiased_z0SinTheta";
46  names[kdecnD0ErrDecor] = "unbiased_d0Sigma";
47  names[kdecnZ0ErrDecor] = "unbiased_z0Sigma";
48  names[kdecnZ0SinThetaErrDecor] = "unbiased_z0SigmaSinTheta";
49  names[kdecnPVD0ErrDecor] = "unbiased_PVd0Sigma";
50  names[kdecnPVZ0ErrDecor] = "unbiased_PVz0Sigma";
51  names[kdecnPVZ0SinThetaErrDecor] = "unbiased_PVz0SigmaSinTheta";
52  names[kdecn_b_D0Decor] = "biased_d0";
53  names[kdecn_b_Z0Decor] = "biased_z0";
54  names[kdecn_b_Z0SinThetaDecor] = "biased_z0SinTheta";
55  names[kdecn_b_D0ErrDecor] = "biased_d0Sigma";
56  names[kdecn_b_Z0ErrDecor] = "biased_z0Sigma";
57  names[kdecn_b_Z0SinThetaErrDecor] = "biased_z0SigmaSinTheta";
58  names[kdecn_b_PVD0ErrDecor] = "biased_PVd0Sigma";
59  names[kdecn_b_PVZ0ErrDecor] = "biased_PVz0Sigma";
60  names[kdecn_b_PVZ0SinThetaErrDecor] = "biased_PVz0SigmaSinTheta";
62  }
63  return StatusCode::SUCCESS;
64  }

Member Data Documentation

◆ m_containerName

SG::ReadHandleKey<xAOD::TrackParticleContainer> DerivationFramework::TrackToVertexWrapper::m_containerName {this, "ContainerName", "", ""}
private

Definition at line 39 of file TrackToVertexWrapper.h.

◆ m_sgName

Gaudi::Property<std::string> DerivationFramework::TrackToVertexWrapper::m_sgName {this, "DecorationPrefix", "", ""}
private

Definition at line 37 of file TrackToVertexWrapper.h.

◆ m_tool

ToolHandle< Trk::ITrackToVertexIPEstimator > DerivationFramework::TrackToVertexWrapper::m_tool {this, "TrackToVertexIPEstimator", "Trk::TrackToVertexIPEstimator", ""}
private

Definition at line 35 of file TrackToVertexWrapper.h.

◆ m_trackFloatDecorKeys

std::vector<SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> > DerivationFramework::TrackToVertexWrapper::m_trackFloatDecorKeys
private

Definition at line 63 of file TrackToVertexWrapper.h.

◆ m_vertexKey

SG::ReadHandleKey<xAOD::VertexContainer> DerivationFramework::TrackToVertexWrapper::m_vertexKey {this, "VertexContainer", "PrimaryVertices", "primary vertex container"}
private

Definition at line 41 of file TrackToVertexWrapper.h.


The documentation for this class was generated from the following files:
DerivationFramework::TrackToVertexWrapper::m_vertexKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexKey
Definition: TrackToVertexWrapper.h:42
DerivationFramework::TrackToVertexWrapper::kdecn_b_D0ErrDecor
@ kdecn_b_D0ErrDecor
Definition: TrackToVertexWrapper.h:56
DerivationFramework::TrackToVertexWrapper::kdecnD0ErrDecor
@ kdecnD0ErrDecor
Definition: TrackToVertexWrapper.h:47
DerivationFramework::createDecoratorKeys
void createDecoratorKeys(T_Parent &parent, const SG::ReadHandleKey< T_Cont > &container_key, const std::string &prefix, const std::vector< std::string > &decor_names, std::vector< SG::WriteDecorHandleKey< T_Cont > > &decor_out)
Definition: DecoratorUtils.h:20
DerivationFramework::TrackToVertexWrapper::kdecnZ0SinThetaDecor
@ kdecnZ0SinThetaDecor
Definition: TrackToVertexWrapper.h:46
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
Trk::ImpactParametersAndSigma::PVsigmaz0
double PVsigmaz0
Definition: ITrackToVertexIPEstimator.h:41
Trk::ImpactParametersAndSigma::PVsigmaz0SinTheta
double PVsigmaz0SinTheta
Definition: ITrackToVertexIPEstimator.h:42
DerivationFramework::TrackToVertexWrapper::kdecnZ0Decor
@ kdecnZ0Decor
Definition: TrackToVertexWrapper.h:45
Trk::ImpactParametersAndSigma::IPd0
double IPd0
Definition: ITrackToVertexIPEstimator.h:34
DerivationFramework::TrackToVertexWrapper::kdecn_b_PVD0ErrDecor
@ kdecn_b_PVD0ErrDecor
Definition: TrackToVertexWrapper.h:59
Trk::ImpactParametersAndSigma::IPz0SinTheta
double IPz0SinTheta
Definition: ITrackToVertexIPEstimator.h:36
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
DerivationFramework::TrackToVertexWrapper::kdecn_b_D0Decor
@ kdecn_b_D0Decor
Definition: TrackToVertexWrapper.h:53
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
DerivationFramework::TrackToVertexWrapper::kdecnZ0SinThetaErrDecor
@ kdecnZ0SinThetaErrDecor
Definition: TrackToVertexWrapper.h:49
DerivationFramework::TrackToVertexWrapper::kdecnPVD0ErrDecor
@ kdecnPVD0ErrDecor
Definition: TrackToVertexWrapper.h:50
DerivationFramework::TrackToVertexWrapper::kdecnPVZ0ErrDecor
@ kdecnPVZ0ErrDecor
Definition: TrackToVertexWrapper.h:51
DerivationFramework::TrackToVertexWrapper::kdecn_b_Z0SinThetaErrDecor
@ kdecn_b_Z0SinThetaErrDecor
Definition: TrackToVertexWrapper.h:58
DerivationFramework::TrackToVertexWrapper::m_trackFloatDecorKeys
std::vector< SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > > m_trackFloatDecorKeys
Definition: TrackToVertexWrapper.h:63
Trk::ImpactParametersAndSigma::PVsigmad0
double PVsigmad0
Definition: ITrackToVertexIPEstimator.h:40
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
DerivationFramework::TrackToVertexWrapper::kdecnZ0ErrDecor
@ kdecnZ0ErrDecor
Definition: TrackToVertexWrapper.h:48
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DerivationFramework::TrackToVertexWrapper::kNFloatDecor
@ kNFloatDecor
Definition: TrackToVertexWrapper.h:62
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
python.subdetectors.mmg.names
names
Definition: mmg.py:8
DerivationFramework::TrackToVertexWrapper::kdecn_b_Z0SinThetaDecor
@ kdecn_b_Z0SinThetaDecor
Definition: TrackToVertexWrapper.h:55
Trk::ImpactParametersAndSigma::IPz0
double IPz0
Definition: ITrackToVertexIPEstimator.h:35
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::TrackToVertexWrapper::m_containerName
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_containerName
Definition: TrackToVertexWrapper.h:40
Trk::ImpactParametersAndSigma::sigmad0
double sigmad0
Definition: ITrackToVertexIPEstimator.h:37
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
DerivationFramework::TrackToVertexWrapper::kdecnPVZ0SinThetaErrDecor
@ kdecnPVZ0SinThetaErrDecor
Definition: TrackToVertexWrapper.h:52
DerivationFramework::TrackToVertexWrapper::kdecn_b_Z0ErrDecor
@ kdecn_b_Z0ErrDecor
Definition: TrackToVertexWrapper.h:57
DerivationFramework::TrackToVertexWrapper::kdecn_b_Z0Decor
@ kdecn_b_Z0Decor
Definition: TrackToVertexWrapper.h:54
DerivationFramework::TrackToVertexWrapper::kdecnD0Decor
@ kdecnD0Decor
Definition: TrackToVertexWrapper.h:44
DerivationFramework::TrackToVertexWrapper::kdecn_b_PVZ0ErrDecor
@ kdecn_b_PVZ0ErrDecor
Definition: TrackToVertexWrapper.h:60
Trk::ImpactParametersAndSigma::sigmaz0SinTheta
double sigmaz0SinTheta
Definition: ITrackToVertexIPEstimator.h:39
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
DerivationFramework::TrackToVertexWrapper::kdecn_b_PVZ0SinThetaErrDecor
@ kdecn_b_PVZ0SinThetaErrDecor
Definition: TrackToVertexWrapper.h:61
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
DerivationFramework::TrackToVertexWrapper::m_sgName
Gaudi::Property< std::string > m_sgName
Definition: TrackToVertexWrapper.h:38
Trk::ImpactParametersAndSigma::sigmaz0
double sigmaz0
Definition: ITrackToVertexIPEstimator.h:38
DerivationFramework::TrackToVertexWrapper::m_tool
ToolHandle< Trk::ITrackToVertexIPEstimator > m_tool
Definition: TrackToVertexWrapper.h:36