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

#include <MeasurementToTrackParticleDecorationAlg.h>

Inheritance diagram for ActsTrk::MeasurementToTrackParticleDecorationAlg:
Collaboration diagram for ActsTrk::MeasurementToTrackParticleDecorationAlg:

Public Member Functions

 MeasurementToTrackParticleDecorationAlg (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual ~MeasurementToTrackParticleDecorationAlg ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode execute (const EventContext &ctx) const override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
virtual bool filterPassed (const EventContext &ctx) const
 
virtual void setFilterPassed (bool state, const EventContext &ctx) const
 
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 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, V, H > &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

enum  Subdetector {
  INVALID_DETECTOR =-1, INNERMOST_PIXEL, PIXEL, STRIP,
  N_SUBDETECTORS
}
 
enum  Region { INVALID_REGION =-1, BARREL, ENDCAP }
 
enum  MeasurementType {
  INVALID_MEASUREMENT =-1, HIT, OUTLIER, HOLE,
  BIASED, UNBIASED
}
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

float getChi2Contribution (const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &state) const
 
std::pair< Acts::BoundVector, Acts::BoundMatrix > getUnbiasedTrackParameters (const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &state, bool useSmoothed=true) const
 
float evaluatePull (const float residual, const float measurementCovariance, const float trackParameterCovariance, const bool evaluateUnbiased) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

PublicToolHandle< ActsTrk::ITrackingGeometryToolm_trackingGeometryTool {this, "TrackingGeometryTool", ""}
 
SG::ReadHandleKey< xAOD::TrackParticleContainerm_trackParticlesKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementRegionKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementDetectorKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementLayerKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_chi2HitPredictedKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_chi2HitFilteredKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementTypeKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementPhiWidthKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementEtaWidthKey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_residualLocXkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_pullLocXkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementLocXkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_trackParameterLocXkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementLocCovXkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_trackParameterLocCovXkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_residualLocYkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_pullLocYkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementLocYkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_trackParameterLocYkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_measurementLocCovYkey
 
SG::WriteDecorHandleKey< xAOD::TrackParticleContainerm_trackParameterLocCovYkey
 
DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. 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

Definition at line 33 of file MeasurementToTrackParticleDecorationAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ MeasurementType

Enumerator
INVALID_MEASUREMENT 
HIT 
OUTLIER 
HOLE 
BIASED 
UNBIASED 

Definition at line 48 of file MeasurementToTrackParticleDecorationAlg.h.

48  {
50  };

◆ Region

Enumerator
INVALID_REGION 
BARREL 
ENDCAP 

Definition at line 45 of file MeasurementToTrackParticleDecorationAlg.h.

45  {
47  };

◆ Subdetector

Enumerator
INVALID_DETECTOR 
INNERMOST_PIXEL 
PIXEL 
STRIP 
N_SUBDETECTORS 

Definition at line 42 of file MeasurementToTrackParticleDecorationAlg.h.

Constructor & Destructor Documentation

◆ MeasurementToTrackParticleDecorationAlg()

ActsTrk::MeasurementToTrackParticleDecorationAlg::MeasurementToTrackParticleDecorationAlg ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 24 of file MeasurementToTrackParticleDecorationAlg.cxx.

25  :
26  AthReentrantAlgorithm(name,pSvcLocator)
27  {}

◆ ~MeasurementToTrackParticleDecorationAlg()

virtual ActsTrk::MeasurementToTrackParticleDecorationAlg::~MeasurementToTrackParticleDecorationAlg ( )
virtualdefault

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64 {
65  return 0;
66 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > &  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< Gaudi::Algorithm > >::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; }

◆ evaluatePull()

float ActsTrk::MeasurementToTrackParticleDecorationAlg::evaluatePull ( const float  residual,
const float  measurementCovariance,
const float  trackParameterCovariance,
const bool  evaluateUnbiased 
) const
private

Definition at line 406 of file MeasurementToTrackParticleDecorationAlg.cxx.

409  {
410  float correlation = evaluateUnbiased ? 1. : -1.;
411  float residualCovariance = measurementCovariance + correlation*trackParameterCovariance;
412  if (residualCovariance<=0.) {
413  // If the total covariance is non-positive return 0
414  ATH_MSG_DEBUG("--- Total covariance for pull evaluation is non-positive! Returning pulls = 0!");
415  return 0.;
416  }
417  return 0.001 * residual/std::sqrt(residualCovariance);
418  }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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; }

◆ execute()

StatusCode ActsTrk::MeasurementToTrackParticleDecorationAlg::execute ( const EventContext &  ctx) const
overridevirtual

Definition at line 62 of file MeasurementToTrackParticleDecorationAlg.cxx.

63  {
64  ATH_MSG_DEBUG("Executing " << name() << " ...");
65 
66  auto tgContext = m_trackingGeometryTool->getGeometryContext(ctx).context();
67 
74 
77 
84 
91 
93  ATH_CHECK(trackParticlesHandle.isValid());
94  const xAOD::TrackParticleContainer *track_particles = trackParticlesHandle.cptr();
95 
96  static const SG::AuxElement::ConstAccessor<ElementLink<ActsTrk::TrackContainer> > actsTrackLink("actsTrack");
97 
98  for (const xAOD::TrackParticle *track_particle : *track_particles) {
99  ElementLink<ActsTrk::TrackContainer> link_to_track = actsTrackLink(*track_particle);
100  ATH_CHECK(link_to_track.isValid());
101 
102  // to ensure that the code does not suggest something stupid (i.e. creating an unnecessary copy)
104  std::optional<ActsTrk::TrackContainer::ConstTrackProxy> >::value);
105  std::optional<ActsTrk::TrackContainer::ConstTrackProxy> optional_track = *link_to_track;
106 
107  if ( not optional_track.has_value() ) {
108  ATH_MSG_WARNING("Invalid track link for particle " << track_particle->index() << ". Skipping track..");
109  continue;
110  }
111 
112  ATH_MSG_DEBUG("Track link found for track particle with index " << track_particle->index());
113  ActsTrk::TrackContainer::ConstTrackProxy track = optional_track.value();
114 
115  std::vector<int>& regions{measurementRegionHandle(*track_particle)};
116  regions.reserve(track.nMeasurements());
117  std::vector<int>& detectors{measurementDetectorHandle(*track_particle)};
118  detectors.reserve(track.nMeasurements());
119  std::vector<int>& layers{measurementLayerHandle(*track_particle)};
120  layers.reserve(track.nMeasurements());
121  std::vector<int>& types{measurementTypeHandle(*track_particle)};
122  types.reserve(track.nMeasurements());
123  std::vector<float>& predchi2s{chi2HitPredictedHandle(*track_particle)};
124  predchi2s.reserve(track.nMeasurements());
125  std::vector<float>& filtchi2s{chi2HitFilteredHandle(*track_particle)};
126  filtchi2s.reserve(track.nMeasurements());
127 
128  std::vector<int>& sizesPhi{measurementPhiWidthHandle(*track_particle)};
129  sizesPhi.reserve(track.nMeasurements());
130  std::vector<int>& sizesEta{measurementEtaWidthHandle(*track_particle)};
131  sizesEta.reserve(track.nMeasurements());
132  std::vector<float>& residualsLocX{residualLocXhandle(*track_particle)};
133  residualsLocX.reserve(track.nMeasurements());
134  std::vector<float>& pullsLocX{pullLocXhandle(*track_particle)};
135  pullsLocX.reserve(track.nMeasurements());
136  std::vector<float>& measurementsLocX{measurementLocXhandle(*track_particle)};
137  measurementsLocX.reserve(track.nMeasurements());
138  std::vector<float>& trackParametersLocX{trackParameterLocXhandle(*track_particle)};
139  trackParametersLocX.reserve(track.nMeasurements());
140  std::vector<float>& measurementsLocCovX{measurementLocCovXhandle(*track_particle)};
141  measurementsLocCovX.reserve(track.nMeasurements());
142  std::vector<float>& trackParametersLocCovX{trackParameterLocCovXhandle(*track_particle)};
143  trackParametersLocCovX.reserve(track.nMeasurements());
144  std::vector<float>& residualsLocY{residualLocYhandle(*track_particle)};
145  residualsLocY.reserve(track.nMeasurements());
146  std::vector<float>& pullsLocY{pullLocYhandle(*track_particle)};
147  pullsLocY.reserve(track.nMeasurements());
148  std::vector<float>& measurementsLocY{measurementLocYhandle(*track_particle)};
149  measurementsLocY.reserve(track.nMeasurements());
150  std::vector<float>& trackParametersLocY{trackParameterLocYhandle(*track_particle)};
151  trackParametersLocY.reserve(track.nMeasurements());
152  std::vector<float>& measurementsLocCovY{measurementLocCovYhandle(*track_particle)};
153  measurementsLocCovY.reserve(track.nMeasurements());
154  std::vector<float>& trackParametersLocCovY{trackParameterLocCovYhandle(*track_particle)};
155  trackParametersLocCovY.reserve(track.nMeasurements());
156 
157  for (const auto state : track.trackStatesReversed()) {
158 
159  auto flag = state.typeFlags();
160  // consider holes and measurements (also outliers)
161  bool anyHit = flag.test(Acts::TrackStateFlag::HoleFlag) or flag.test(Acts::TrackStateFlag::MeasurementFlag);
162  if (not anyHit) {
163  ATH_MSG_DEBUG("--- This is not a hit measurement, skipping...");
164  continue;
165  }
166 
167  // starting with invalid values and setting them where needed.
168 
169  int detector = -999;
170  int region = -999;
171  int layer = -999;
172  int type = -999;
173  float chi2_hit_predicted = -999.;
174  float chi2_hit_filtered = -999.;
175  int sizePhi = -999;
176  int sizeEta = -999;
177  float residualLocX = -999.;
178  float pullLocX = -999.;
179  float measurementLocX = -999.;
180  float trackParameterLocX = -999.;
181  float measurementLocCovX = -999.;
182  float trackParameterLocCovX = -999;
183  float residualLocY = -999.;
184  float pullLocY = -999.;
185  float measurementLocY = -999.;
186  float trackParameterLocY = -999.;
187  float measurementLocCovY = -999.;
188  float trackParameterLocCovY = -999.;
189  bool isAnnulusBound = false;
190 
191  // Get the measurement type
192  if (flag.test(Acts::TrackStateFlag::HoleFlag)) {
193  type = MeasurementType::HOLE;
194  ATH_MSG_DEBUG("--- This is a hole");
195  } else if (flag.test(Acts::TrackStateFlag::OutlierFlag)) {
196  type = MeasurementType::OUTLIER;
197  ATH_MSG_DEBUG("--- This is an outlier");
198  } else {
199  type = MeasurementType::HIT;
200  ATH_MSG_DEBUG("--- This is a hit");
201  }
202 
203  // Check the location of the state
204  if (state.hasReferenceSurface() and state.referenceSurface().associatedDetectorElement()) {
205  const ActsDetectorElement * detectorElement = dynamic_cast<const ActsDetectorElement *>(state.referenceSurface().associatedDetectorElement());
206  if (!detectorElement) {
207  ATH_MSG_WARNING("--- TrackState reference surface returned an invalid associated detector element");
208  continue;
209  }
210  const InDetDD::SiDetectorElement * siliconDetectorElement = dynamic_cast<const InDetDD::SiDetectorElement *>(detectorElement->upstreamDetectorElement());
211  if (!siliconDetectorElement) {
212  ATH_MSG_WARNING("--- TrackState associated detector element is not silicon");
213  continue;
214  }
215 
216  const Acts::AnnulusBounds* annulusBounds = dynamic_cast<const Acts::AnnulusBounds*>(&(state.referenceSurface().bounds()));
217  isAnnulusBound = annulusBounds ? true : false;
218 
219  if (siliconDetectorElement) {
220  Identifier detectorIdentifier = siliconDetectorElement->identify();
221  if (siliconDetectorElement->isPixel()) {
222  const PixelID* pixel_id = static_cast<const PixelID *>(siliconDetectorElement->getIdHelper());
223  int layer_disk = pixel_id->layer_disk(detectorIdentifier);
224  layer = layer_disk;
225  if (pixel_id->barrel_ec(detectorIdentifier) == 0) {
226  if (layer_disk == 0) {
227  detector = Subdetector::INNERMOST_PIXEL;
228  } else detector = Subdetector::PIXEL;
229  region = Region::BARREL;
230  } else {
232  region = Region::ENDCAP;
233  }
234  } else if (siliconDetectorElement->isSCT()) {
235  const SCT_ID* sct_id = static_cast<const SCT_ID *>(siliconDetectorElement->getIdHelper());
237  region = sct_id->barrel_ec(detectorIdentifier) == 0 ?
239  layer = sct_id->layer_disk(detectorIdentifier);;
240  } else ATH_MSG_WARNING("--- Unknown detector type - It is not pixel nor strip detecor element!");
241  } else ATH_MSG_WARNING("--- Missing silicon detector element!");
242  } else ATH_MSG_WARNING("--- Missing reference surface or associated detector element!");
243 
244 
245 
246  // If I have a measurement (hit or outlier) then proceed with computing the residuals / pulls
247 
248  if (type == MeasurementType::OUTLIER || type == MeasurementType::HIT) {
249 
250  //Get the Chi2 computation
251 
252  if (type == MeasurementType::HIT) {
253  chi2_hit_filtered = state.chi2();
254  }
255 
256  if (state.hasUncalibratedSourceLink()) {
257  chi2_hit_predicted = getChi2Contribution(state);
258  }
259 
260  // Skip all states without smoothed parameters or without projector
261  if (!state.hasSmoothed() || !state.hasProjector())
262  continue;
263 
264  // Calling effective Calibrated has some runtime overhead
265  const auto &calibratedParameters = state.effectiveCalibrated();
266  const auto &calibratedCovariance = state.effectiveCalibratedCovariance();
267 
268  // We evaluate the unbiased parameters for:
269  // - measurements added to the fit. For outliers, the measurement is not part of the fit, hence track parameters are already unbiased
270  // - if the filtered parameters and the projector exist.
271  bool evaluateUnbiased = (!flag.test(Acts::TrackStateFlag::OutlierFlag));
272 
273  if (evaluateUnbiased) {
274  ATH_MSG_DEBUG("--- Good for unbiased parameters evaluation!");
275  type = MeasurementType::UNBIASED;
276  // if unbiased, access the associated uncalibrated measurement and store the size
277  if (state.hasUncalibratedSourceLink()) {
278  ATLASUncalibSourceLink sourceLink = state.getUncalibratedSourceLink().template get<ATLASUncalibSourceLink>();
279  const xAOD::UncalibratedMeasurement &uncalibratedMeasurement = getUncalibratedMeasurement(sourceLink);
280  const xAOD::UncalibMeasType measurementType = uncalibratedMeasurement.type();
281  if (measurementType == xAOD::UncalibMeasType::PixelClusterType) {
282  auto pixelCluster = static_cast<const xAOD::PixelCluster *>(&uncalibratedMeasurement);
283  sizePhi = pixelCluster->channelsInPhi();
284  sizeEta = pixelCluster->channelsInEta();
285  } else if (measurementType == xAOD::UncalibMeasType::StripClusterType) {
286  auto stripCluster = static_cast<const xAOD::StripCluster *>(&uncalibratedMeasurement);
287  sizePhi = stripCluster->channelsInPhi();
288  } else {
289  ATH_MSG_DEBUG("xAOD::UncalibratedMeasurement is neither xAOD::PixelCluster nor xAOD::StripCluster");
290  }
291  }
292  }
293 
294  const auto& [unbiasedParameters, unbiasedCovariance] =
295  evaluateUnbiased ? Acts::calculateUnbiasedParametersCovariance(state) : std::make_pair(state.parameters(), state.covariance());
296 
297  measurementLocX = calibratedParameters[Acts::eBoundLoc0];
298  measurementLocCovX = calibratedCovariance(Acts::eBoundLoc0, Acts::eBoundLoc0);
299 
300  if (!isAnnulusBound) {
301 
302  trackParameterLocX = unbiasedParameters[Acts::eBoundLoc0];
303  residualLocX = (measurementLocX - trackParameterLocX) / 1_um; //in um
304  trackParameterLocCovX = unbiasedCovariance(Acts::eBoundLoc0, Acts::eBoundLoc0);
305  }
306  else {
307  // TODO:: use directly phi instead of r*phi in the future
308 
309  float locR = unbiasedParameters[Acts::eBoundLoc0];
310  float covR = unbiasedCovariance(Acts::eBoundLoc0,Acts::eBoundLoc0);
311  float locphi = unbiasedParameters[Acts::eBoundLoc1];
312  float covphi = unbiasedCovariance(Acts::eBoundLoc1,Acts::eBoundLoc1);
313  float covRphi = unbiasedCovariance(Acts::eBoundLoc0,Acts::eBoundLoc1);
314 
315  trackParameterLocX = locphi;
316  residualLocX = locR * (measurementLocX - trackParameterLocX) / 1_um;
317  // Compute the error on the local rphi
318  trackParameterLocCovX = locR*locR*covphi + locphi*locphi*covR + 2*locphi*locR*covRphi;
319 
320  // Rescale the error of the measurement to Rphi.
321  measurementLocCovX = locR*locR * measurementLocCovX;
322  }
323 
324  pullLocX = evaluatePull(residualLocX, measurementLocCovX,
325  trackParameterLocCovX, evaluateUnbiased);
326 
327  if (state.calibratedSize() == 2) {
328  measurementLocY = calibratedParameters[Acts::eBoundLoc1];
329  trackParameterLocY = unbiasedParameters[Acts::eBoundLoc1];
330  residualLocY = (measurementLocY - trackParameterLocY) / 1_um;
331  measurementLocCovY = calibratedCovariance(Acts::eBoundLoc1, Acts::eBoundLoc1);
332  trackParameterLocCovY = unbiasedCovariance(Acts::eBoundLoc1, Acts::eBoundLoc1);
333  pullLocY = evaluatePull(residualLocY, measurementLocCovY,
334  trackParameterLocCovY, evaluateUnbiased);
335  }
336 
337  } // hit or outliers
338 
339  else if (type == MeasurementType::HOLE) {
340 
341  // Get the predicted position on sensor
342  auto pred = state.predicted();
343  trackParameterLocX = pred[Acts::eBoundLoc0];
344  trackParameterLocY = pred[Acts::eBoundLoc1];
345  }
346 
347  // Always fill with this information
348 
349  regions.push_back(region);
350  detectors.push_back(detector);
351  layers.push_back(layer);
352  types.push_back(type);
353  predchi2s.push_back(chi2_hit_predicted);
354  filtchi2s.push_back(chi2_hit_filtered);
355  sizesPhi.push_back(sizePhi);
356  sizesEta.push_back(sizeEta);
357  residualsLocX.push_back(residualLocX);
358  pullsLocX.push_back(pullLocX);
359  measurementsLocX.push_back(measurementLocX);
360  trackParametersLocX.push_back(trackParameterLocX);
361  measurementsLocCovX.push_back(measurementLocCovX);
362  trackParametersLocCovX.push_back(trackParameterLocCovX);
363  residualsLocY.push_back(residualLocY);
364  pullsLocY.push_back(pullLocY);
365  measurementsLocY.push_back(measurementLocY);
366  trackParametersLocY.push_back(trackParameterLocY);
367  measurementsLocCovY.push_back(measurementLocCovY);
368  trackParametersLocCovY.push_back(trackParameterLocCovY);
369 
370 
371  } // loop on states
372 
373  } // loop on tracks
374 
375  return StatusCode::SUCCESS;
376  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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

◆ extraOutputDeps()

const DataObjIDColl & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90 {
91  // If we didn't find any symlinks to add, just return the collection
92  // from the base class. Otherwise, return the extended collection.
93  if (!m_extendedExtraObjects.empty()) {
95  }
96  return BaseAlg::extraOutputDeps();
97 }

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext &  ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96  {
97  return execState( ctx ).filterPassed();
98  }

◆ getChi2Contribution()

float ActsTrk::MeasurementToTrackParticleDecorationAlg::getChi2Contribution ( const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &  state) const
private

Definition at line 378 of file MeasurementToTrackParticleDecorationAlg.cxx.

378  {
379 
380  auto pred = state.predicted();
381  auto predC = state.predictedCovariance();
382 
383  return Acts::visit_measurement(
384  state.calibratedSize(),
385  [&]<std::size_t measdim>(std::integral_constant<std::size_t, measdim>) {
386  Acts::FixedBoundSubspaceHelper<measdim> subspaceHelper =
387  state.template projectorSubspaceHelper<measdim>();
388 
389  // TODO use subspace helper for projection instead
390  auto H = subspaceHelper.projector();
391 
392  const auto calibrated = state.template calibrated<measdim>();
393  const auto calibratedCov = state.template calibratedCovariance<measdim>();
394 
395  auto residual = (H * pred - calibrated).eval();
396  auto rescov = (H * predC * H.transpose() + calibratedCov).eval();
397 
398  return ((residual.transpose() * rescov.inverse() * residual).eval())(0,0);
399  });
400 
401 
402 
403  }

◆ getUnbiasedTrackParameters()

std::pair<Acts::BoundVector, Acts::BoundMatrix> ActsTrk::MeasurementToTrackParticleDecorationAlg::getUnbiasedTrackParameters ( const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &  state,
bool  useSmoothed = true 
) const
private

◆ initialize()

StatusCode ActsTrk::MeasurementToTrackParticleDecorationAlg::initialize ( )
overridevirtual

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ isClonable()

bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::isClonable
overridevirtualinherited

Specify if the algorithm is clonable.

Reentrant algorithms are clonable.

Definition at line 68 of file AthCommonReentrantAlgorithm.cxx.

52 {
53  // Reentrant algorithms are clonable.
54  return true;
55 }

◆ msg() [1/2]

MsgStream& AthCommonMsg< Gaudi::Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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.

◆ 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< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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  }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool  state,
const EventContext &  ctx 
) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100  {
101  execState( ctx ).setFilterPassed( state );
102  }

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext &  ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77 {
78  return BaseAlg::sysExecute (ctx);
79 }

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107  {
109 
110  if (sc.isFailure()) {
111  return sc;
112  }
113 
114  ServiceHandle<ICondSvc> cs("CondSvc",name());
115  for (auto h : outputHandles()) {
116  if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117  // do this inside the loop so we don't create the CondSvc until needed
118  if ( cs.retrieve().isFailure() ) {
119  ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120  return StatusCode::SUCCESS;
121  }
122  if (cs->regHandle(this,*h).isFailure()) {
123  sc = StatusCode::FAILURE;
124  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125  << " with CondSvc");
126  }
127  }
128  }
129  return sc;
130 }

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::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< Gaudi::Algorithm > >::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_chi2HitFilteredKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_chi2HitFilteredKey
private
Initial value:
{
this, "Chi2HitFilteredKey", m_trackParticlesKey, "chi2_hit_filtered",
"Filtered Chi2 contribution for each hit"}

Definition at line 80 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_chi2HitPredictedKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_chi2HitPredictedKey
private
Initial value:
{
this, "Chi2HitPredictedKey", m_trackParticlesKey, "chi2_hit_predicted",
"Predicted Chi2 contribution for each hit"}

Definition at line 77 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_measurementDetectorKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementDetectorKey
private
Initial value:
{
this, "MeasurementDetectorKey", m_trackParticlesKey, "measurement_det",
"Decorate track particle with measurement detector id (innermost pix, pix, strip)"}

Definition at line 71 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementEtaWidthKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementEtaWidthKey
private
Initial value:
{
this, "MeasurementEtaWidthKey", m_trackParticlesKey, "hitResiduals_etaWidth",
"Decorate track particle with measurement cluster size (in eta)"}

Definition at line 89 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementLayerKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLayerKey
private
Initial value:
{
this, "MeasurementLayerKey", m_trackParticlesKey, "measurement_iLayer",
"Decorate track particle with measurement layer"}

Definition at line 74 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementLocCovXkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocCovXkey
private
Initial value:
{
this, "MeasurementLocCovXkey", m_trackParticlesKey, "measurementLocCovX",
"Decorate track particle with local x measurement covariance"}

Definition at line 106 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementLocCovYkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocCovYkey
private
Initial value:
{
this, "MeasurementLocCovYkey", m_trackParticlesKey, "measurementLocCovY",
"Decorate track particle with local y measurement covariance"}

Definition at line 125 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementLocXkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocXkey
private
Initial value:
{
this, "MeasurementLocXkey", m_trackParticlesKey, "measurementLocX",
"Decorate track particle with measurement local x"}

Definition at line 100 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementLocYkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocYkey
private
Initial value:
{
this, "MeasurementLocYkey", m_trackParticlesKey, "measurementLocY",
"Decorate track particle with measurement local y"}

Definition at line 119 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementPhiWidthKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementPhiWidthKey
private
Initial value:
{
this, "MeasurementPhiWidthKey", m_trackParticlesKey, "hitResiduals_phiWidth",
"Decorate track particle with measurement cluster size (in r-phi)"}

Definition at line 86 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementRegionKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementRegionKey
private
Initial value:
{
this, "MeasurementRegionKey", m_trackParticlesKey, "measurement_region",
"Decorate track particle with region of the measurement (barrel, ec)"}

Definition at line 68 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_measurementTypeKey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementTypeKey
private
Initial value:
{
this, "MeasurementTypeKey", m_trackParticlesKey, "measurement_type",
"Decorate track particle with type of track state (outlier,hole, biased/unbiased)"}

Definition at line 83 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_pullLocXkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_pullLocXkey
private
Initial value:
{
this, "PullLocXkey", m_trackParticlesKey, "hitResiduals_pullLocX",
"Decorate track particle with unbiased pull in local x"}

Definition at line 97 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_pullLocYkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_pullLocYkey
private
Initial value:
{
this, "PullLocYkey", m_trackParticlesKey, "hitResiduals_pullLocY",
"Decorate track particle with unbiased pull in local y"}

Definition at line 116 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_residualLocXkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_residualLocXkey
private
Initial value:
{
this, "ResidualLocXkey", m_trackParticlesKey, "hitResiduals_residualLocX",
"Decorate track particle with unbiased residual in local x"}

Definition at line 94 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_residualLocYkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_residualLocYkey
private
Initial value:
{
this, "ResidualLocYkey", m_trackParticlesKey, "hitResiduals_residualLocY",
"Decorate track particle with unbiased residual in local y"}

Definition at line 113 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackingGeometryTool

PublicToolHandle<ActsTrk::ITrackingGeometryTool> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackingGeometryTool {this, "TrackingGeometryTool", ""}
private

Definition at line 63 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackParameterLocCovXkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocCovXkey
private
Initial value:
{
this, "TrackParameterLocCovXkey", m_trackParticlesKey, "trackParameterLocCovX",
"Decorate track particle with unbiased local x prediction covariance"}

Definition at line 109 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackParameterLocCovYkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocCovYkey
private
Initial value:
{
this, "TrackParameterLocCovYkey", m_trackParticlesKey, "trackParameterLocCovY",
"Decorate track particle with unbiased local y prediction covariance"}

Definition at line 128 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackParameterLocXkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocXkey
private
Initial value:
{
this, "TrackParameterLocXkey", m_trackParticlesKey, "trackParamLocX",
"Decorate track particle with unbiased prediction in local x"}

Definition at line 103 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackParameterLocYkey

SG::WriteDecorHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocYkey
private
Initial value:
{
this, "TrackParameterLocYkey", m_trackParticlesKey, "trackParamLocY",
"Decorate track particle with unbiased prediction in local y"}

Definition at line 122 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackParticlesKey

SG::ReadHandleKey<xAOD::TrackParticleContainer> ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParticlesKey
private
Initial value:
{
this, "TrackParticleKey", "", "Input track particle collection"}

Definition at line 65 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_residualLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_residualLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:94
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLayerKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLayerKey
Definition: MeasurementToTrackParticleDecorationAlg.h:74
ClusterSeg::residual
@ residual
Definition: ClusterNtuple.h:20
PixelID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: PixelID.h:619
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
ActsTrk::MeasurementToTrackParticleDecorationAlg::evaluatePull
float evaluatePull(const float residual, const float measurementCovariance, const float trackParameterCovariance, const bool evaluateUnbiased) const
Definition: MeasurementToTrackParticleDecorationAlg.cxx:406
xAOD::UncalibMeasType::StripClusterType
@ StripClusterType
TRTCalib_cfilter.detector
detector
Definition: TRTCalib_cfilter.py:241
ActsTrk::MeasurementToTrackParticleDecorationAlg::HIT
@ HIT
Definition: MeasurementToTrackParticleDecorationAlg.h:49
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
module_driven_slicing.layers
layers
Definition: module_driven_slicing.py:113
ActsTrk::MeasurementToTrackParticleDecorationAlg::INVALID_MEASUREMENT
@ INVALID_MEASUREMENT
Definition: MeasurementToTrackParticleDecorationAlg.h:49
ActsDetectorElement::upstreamDetectorElement
const GeoVDetectorElement * upstreamDetectorElement() const
Returns the underllying GeoModel detectorelement that this one is based on.
Definition: ActsDetectorElement.cxx:286
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
ActsTrk::MeasurementToTrackParticleDecorationAlg::INNERMOST_PIXEL
@ INNERMOST_PIXEL
Definition: MeasurementToTrackParticleDecorationAlg.h:43
athena.value
value
Definition: athena.py:124
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementDetectorKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementDetectorKey
Definition: MeasurementToTrackParticleDecorationAlg.h:71
RunPrintSiDetElements.detectors
detectors
Definition: RunPrintSiDetElements.py:95
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:103
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
SCT_ID::barrel_ec
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition: SCT_ID.h:728
Trk::locR
@ locR
Definition: ParamDefs.h:44
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_chi2HitFilteredKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_chi2HitFilteredKey
Definition: MeasurementToTrackParticleDecorationAlg.h:80
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_residualLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_residualLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:113
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
InDetDD::SolidStateDetectorElementBase::getIdHelper
const AtlasDetectorID * getIdHelper() const
Returns the id helper (inline)
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
Trk::stripCluster
@ stripCluster
Definition: MeasurementType.h:23
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:274
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
AthCommonReentrantAlgorithm::extraOutputDeps
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
Definition: AthCommonReentrantAlgorithm.cxx:89
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocCovYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocCovYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:128
ENDCAP
@ ENDCAP
Definition: TRTRadiatorParameters.h:10
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
xAOD::UncalibratedMeasurement_v1
Definition: UncalibratedMeasurement_v1.h:13
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:100
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsTrk::MeasurementToTrackParticleDecorationAlg::BIASED
@ BIASED
Definition: MeasurementToTrackParticleDecorationAlg.h:49
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
xAOD::UncalibratedMeasurement_v1::type
virtual xAOD::UncalibMeasType type() const =0
Returns the type of the measurement type as a simple enumeration.
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_pullLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_pullLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:116
ActsTrk::ATLASUncalibSourceLink
const xAOD::UncalibratedMeasurement * ATLASUncalibSourceLink
Definition: ATLASSourceLink.h:24
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
AthCommonReentrantAlgorithm::sysExecute
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Definition: AthCommonReentrantAlgorithm.cxx:76
master.flag
bool flag
Definition: master.py:29
ActsTrk::MeasurementToTrackParticleDecorationAlg::ENDCAP
@ ENDCAP
Definition: MeasurementToTrackParticleDecorationAlg.h:46
xAOD::StripCluster_v1
Definition: StripCluster_v1.h:17
ActsTrk::MeasurementToTrackParticleDecorationAlg::N_SUBDETECTORS
@ N_SUBDETECTORS
Definition: MeasurementToTrackParticleDecorationAlg.h:43
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ActsTrk::MeasurementToTrackParticleDecorationAlg::getChi2Contribution
float getChi2Contribution(const typename ActsTrk::TrackStateBackend::ConstTrackStateProxy &state) const
Definition: MeasurementToTrackParticleDecorationAlg.cxx:378
ActsDetectorElement
Definition: ActsDetectorElement.h:44
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
ActsTrk::MeasurementToTrackParticleDecorationAlg::PIXEL
@ PIXEL
Definition: MeasurementToTrackParticleDecorationAlg.h:43
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ActsTrk::MeasurementToTrackParticleDecorationAlg::STRIP
@ STRIP
Definition: MeasurementToTrackParticleDecorationAlg.h:43
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
InDetDD::SiDetectorElement::isPixel
bool isPixel() const
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementEtaWidthKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementEtaWidthKey
Definition: MeasurementToTrackParticleDecorationAlg.h:89
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementRegionKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementRegionKey
Definition: MeasurementToTrackParticleDecorationAlg.h:68
PixelID::layer_disk
int layer_disk(const Identifier &id) const
Definition: PixelID.h:626
python.root_lsr_rank.types
types
Definition: root_lsr_rank.py:35
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
ActsTrk::MeasurementToTrackParticleDecorationAlg::BARREL
@ BARREL
Definition: MeasurementToTrackParticleDecorationAlg.h:46
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_pullLocXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_pullLocXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:97
ActsTrk::getUncalibratedMeasurement
const xAOD::UncalibratedMeasurement & getUncalibratedMeasurement(const ATLASUncalibSourceLink &source_link)
Definition: ATLASSourceLink.h:26
SCT_ID::layer_disk
int layer_disk(const Identifier &id) const
Definition: SCT_ID.h:734
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
ActsTrk::MeasurementToTrackParticleDecorationAlg::INVALID_REGION
@ INVALID_REGION
Definition: MeasurementToTrackParticleDecorationAlg.h:46
ActsTrk::MeasurementToTrackParticleDecorationAlg::UNBIASED
@ UNBIASED
Definition: MeasurementToTrackParticleDecorationAlg.h:49
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocCovXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocCovXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:109
ActsTrk::MeasurementToTrackParticleDecorationAlg::INVALID_DETECTOR
@ INVALID_DETECTOR
Definition: MeasurementToTrackParticleDecorationAlg.h:43
Trk::pixelCluster
@ pixelCluster
Definition: MeasurementType.h:22
a
TList * a
Definition: liststreamerinfos.cxx:10
xAOD::PixelCluster_v1
Definition: PixelCluster_v1.h:17
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
h
SCT_ID
Definition: SCT_ID.h:68
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocCovXkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocCovXkey
Definition: MeasurementToTrackParticleDecorationAlg.h:106
LVL1TGCTrigger::STRIP
@ STRIP
Definition: TGCNumbering.h:52
xAOD::UncalibMeasType
UncalibMeasType
Define the type of the uncalibrated measurement.
Definition: MeasurementDefs.h:25
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
BARREL
@ BARREL
Definition: TRTRadiatorParameters.h:10
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:119
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthCommonReentrantAlgorithm.cxx:107
ActsTrk::MeasurementToTrackParticleDecorationAlg::OUTLIER
@ OUTLIER
Definition: MeasurementToTrackParticleDecorationAlg.h:49
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementPhiWidthKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementPhiWidthKey
Definition: MeasurementToTrackParticleDecorationAlg.h:86
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParticlesKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticlesKey
Definition: MeasurementToTrackParticleDecorationAlg.h:65
ActsTrk::MeasurementToTrackParticleDecorationAlg::HOLE
@ HOLE
Definition: MeasurementToTrackParticleDecorationAlg.h:49
InDetDD::SiDetectorElement::isSCT
bool isSCT() const
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackParameterLocYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_trackParameterLocYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:122
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_chi2HitPredictedKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_chi2HitPredictedKey
Definition: MeasurementToTrackParticleDecorationAlg.h:77
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackingGeometryTool
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Definition: MeasurementToTrackParticleDecorationAlg.h:63
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementTypeKey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementTypeKey
Definition: MeasurementToTrackParticleDecorationAlg.h:83
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthCommonReentrantAlgorithm.h:114
PixelID
Definition: PixelID.h:67
InDetDD::SolidStateDetectorElementBase::identify
virtual Identifier identify() const override final
identifier of this detector element (inline)
xAOD::UncalibMeasType::PixelClusterType
@ PixelClusterType
fitman.k
k
Definition: fitman.py:528
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_measurementLocCovYkey
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_measurementLocCovYkey
Definition: MeasurementToTrackParticleDecorationAlg.h:125
ServiceHandle< ICondSvc >
PIXEL
@ PIXEL
Definition: RegSelEnums.h:24
Identifier
Definition: IdentifierFieldParser.cxx:14