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

Private Attributes

ToolHandle< IActsTrackingGeometryToolm_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 21 of file MeasurementToTrackParticleDecorationAlg.cxx.

22  :
23  AthReentrantAlgorithm(name,pSvcLocator)
24  {}

◆ ~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 > &  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 > &  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 > &  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 > &  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 > &  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 426 of file MeasurementToTrackParticleDecorationAlg.cxx.

429  {
430  float correlation = evaluateUnbiased ? 1. : -1.;
431  float residualCovariance = measurementCovariance + correlation*trackParameterCovariance;
432  if (residualCovariance<=0.) {
433  // If the total covariance is non-positive return 0
434  ATH_MSG_DEBUG("--- Total covariance for pull evaluation is non-positive! Returning pulls = 0!");
435  return 0.;
436  }
437  return 0.001 * residual/std::sqrt(residualCovariance);
438  }

◆ 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 82 of file MeasurementToTrackParticleDecorationAlg.cxx.

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

◆ 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 398 of file MeasurementToTrackParticleDecorationAlg.cxx.

398  {
399 
400  auto pred = state.predicted();
401  auto predC = state.predictedCovariance();
402 
403  return Acts::visit_measurement(
404  state.calibratedSize(),
405  [&]<std::size_t measdim>(std::integral_constant<std::size_t, measdim>) {
406  Acts::FixedBoundSubspaceHelper<measdim> subspaceHelper =
407  state.template projectorSubspaceHelper<measdim>();
408 
409  // TODO use subspace helper for projection instead
410  auto H = subspaceHelper.projector();
411 
412  const auto calibrated = state.template calibrated<measdim>();
413  const auto calibratedCov = state.template calibratedCovariance<measdim>();
414 
415  auto residual = (H * pred - calibrated).eval();
416  auto rescov = (H * predC * H.transpose() + calibratedCov).eval();
417 
418  return ((residual.transpose() * rescov.inverse() * residual).eval())(0,0);
419  });
420 
421 
422 
423  }

◆ 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

Definition at line 26 of file MeasurementToTrackParticleDecorationAlg.cxx.

27  {
28  ATH_MSG_DEBUG("Initializing " << name() << " ...");
29 
31 
40 
47 
54 
55  // Decorations
76 
78 
79  return StatusCode::SUCCESS;
80  }

◆ 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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "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", "hitResiduals_residualLocY",
"Decorate track particle with unbiased residual in local y"}

Definition at line 113 of file MeasurementToTrackParticleDecorationAlg.h.

◆ m_trackingGeometryTool

ToolHandle<IActsTrackingGeometryTool> 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", "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", "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", "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", "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:426
xAOD::UncalibMeasType::StripClusterType
@ StripClusterType
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
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:114
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:284
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
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
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
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:210
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.
ActsTrk::MeasurementToTrackParticleDecorationAlg::m_trackingGeometryTool
ToolHandle< IActsTrackingGeometryTool > m_trackingGeometryTool
Definition: MeasurementToTrackParticleDecorationAlg.h:63
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
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:398
ActsDetectorElement
Definition: ActsDetectorElement.h:42
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:798
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_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
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
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