 |
ATLAS Offline Software
|
#include <TrackToTrackParticleCnvAlg.h>
|
| TrackToTrackParticleCnvAlg (const std::string &name, ISvcLocator *pSvcLocator) |
|
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 |
|
|
Acts::BoundTrackParameters | parametersAtPerigee (const EventContext &ctx, const typename ActsTrk::TrackContainer::ConstTrackProxy &track, const Acts::PerigeeSurface &perigee_surface) 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...
|
|
|
ToolHandle< IActsExtrapolationTool > | m_extrapolationTool {this, "ExtrapolationTool", ""} |
|
PublicToolHandle< ActsTrk::ITrackingGeometryTool > | m_trackingGeometryTool {this, "TrackingGeometryTool", "ActsTrackingGeometryTool"} |
|
SG::ReadHandleKeyArray< ActsTrk::TrackContainer > | m_tracksContainerKey {this, "ACTSTracksLocation", {},"Track collection (ActsTrk variant)"} |
|
SG::ReadCondHandleKey< InDet::BeamSpotData > | m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot or empty." } |
|
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > | m_fieldCacheCondObjInputKey {this,"AtlasFieldCacheCondObj","fieldCondObj", "Name of the Magnetic Field conditions object key" } |
|
SG::ReadCondHandleKeyArray< InDetDD::SiDetectorElementCollection > | m_siDetEleCollKey {this, "SiDetectorElementCollections", {}, "Pixel and strip element collections to get geometry information about measurements."} |
|
Gaudi::Property< std::vector< unsigned int > > | m_siDetEleCollToMeasurementType {this, "SiDetEleCollToMeasurementType",{}, "One value per si detector collection: Pixel = 1, Strip = 2"} |
|
SG::ReadHandleKey< xAOD::VertexContainer > | m_vertexHandle {this, "VertexContainerKey", "", "Name of the Primary Vertex Container"} |
|
SG::WriteHandleKey< xAOD::TrackParticleContainer > | m_trackParticlesOutKey {this, "TrackParticlesOutKey","", "Name of the produced track particle collection" } |
|
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > | m_decorator_actsTracks {this, "ActsTrackLink", "actsTrack"} |
|
Gaudi::Property< double > | m_paramExtrapolationParLimit {this, "ExtrapolationPathLimit",std::numeric_limits<double>::max(), "PathLimit for extrapolating track parameters." } |
|
Gaudi::Property< bool > | m_firstAndLastParamOnly {this, "FirstAndLastParameterOnly",true, "Only convert the first and the last parameter." } |
|
Gaudi::Property< bool > | m_computeExpectedLayerPattern {this, "ComputeExpectedLayerPattern",true, "Compute the expected layer pattern. CPU expensive" } |
|
Gaudi::Property< bool > | m_expectIfPixelContributes {this, "expectIfPixelContribution",true, "Only expect pixel hits if there are pixel hits on track." } |
|
Gaudi::Property< double > | m_pixelExpectLayerPathLimitInMM |
|
Gaudi::Property< std::string > | m_perigeeExpression {this, "PerigeeExpression", "DontRecalculate"} |
|
expressionStrategy | m_expression_strategy {expressionStrategy::BeamLine} |
|
std::unique_ptr< Propagator > | m_propagator |
|
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 |
|
◆ Navigator
◆ Propagator
◆ Stepper
◆ StoreGateSvc_t
◆ expressionStrategy
◆ TrackToTrackParticleCnvAlg()
ActsTrk::TrackToTrackParticleCnvAlg::TrackToTrackParticleCnvAlg |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
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.
◆ convertParticleHypothesis()
Definition at line 125 of file TrackToTrackParticleCnvAlg.h.
126 std::vector<std::pair<Acts::PdgParticle, xAOD::ParticleHypothesis> >::const_iterator
127 iter = std::find_if(s_actsHypothesisToxAOD.begin(),
128 s_actsHypothesisToxAOD.end(),
129 [abs_pdg_id](
const std::pair<Acts::PdgParticle, xAOD::ParticleHypothesis> &elm) {
130 return abs_pdg_id == elm.first;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation 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.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode ActsTrk::TrackToTrackParticleCnvAlg::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
Definition at line 201 of file TrackToTrackParticleCnvAlg.cxx.
204 if (wh_track_particles.record(std::make_unique<xAOD::TrackParticleContainer>(),
205 std::make_unique<xAOD::TrackParticleAuxContainer>()).isFailure()) {
207 return StatusCode::FAILURE;
221 beamspot_data = beamSpotHandle.
cptr();
227 vertexContainer = vertexHandle.
cptr();
228 if (vertexContainer->size() == 0) {
229 ATH_MSG_ERROR(
"Retrieved an empty vertex container. This is totally wrong!");
230 return StatusCode::FAILURE;
240 if (not primaryVertex) {
241 ATH_MSG_WARNING(
"Requested to compute track particles wrt primary vertex, but no primary vertex is found. Using dummy vertex");
242 primaryVertex = vertexContainer->front();
246 std::size_t nTracks = 0
ul;
247 std::vector<const ActsTrk::TrackContainer *> trackContainers;
251 trackContainers.push_back( handle.
cptr() );
252 nTracks += trackContainers.back()->size();
256 std::vector<xAOD::TrackParticle*> toAddParticles;
257 toAddParticles.reserve(nTracks);
258 for (std::size_t
i(0);
i<nTracks; ++
i) {
261 track_particles->
insert(track_particles->
end(),
262 toAddParticles.begin(),
263 toAddParticles.end());
272 std::shared_ptr<Acts::PerigeeSurface> perigee_surface {
nullptr};
292 std::vector<float> tmp_cov_vector;
293 std::vector<ActsTrk::TrackStateBackend::ConstTrackStateProxy::IndexType > tmp_param_state_idx;
294 tmp_param_state_idx.reserve(30);
296 std::vector<std::vector<float>> parametersVec;
299 unsigned int converted_track_states=0;
301 std::size_t particleCounter = 0
ul;
302 using namespace Acts::UnitLiterals;
307 for (
const typename ActsTrk::TrackContainer::ConstTrackProxy
track : *tracksContainer) {
312 Acts::BoundTrackParameters perigeeParam = [&] {
317 return track.createParametersAtReference();
324 Acts::BoundVector boundParams = perigeeParam.parameters();
326 boundParams[Acts::eBoundLoc1],
327 boundParams[Acts::eBoundPhi],
328 boundParams[Acts::eBoundTheta],
329 boundParams[Acts::eBoundQOverP] * 1_MeV);
331 if (perigeeParam.covariance().has_value()) {
333 lowerTriangleToVectorScaleLastRow(perigeeParam.covariance().value(),tmp_cov_vector,5, 1_MeV);
349 constexpr
float inv_1_MeV = 1/1_MeV;
361 measurementToSummaryType,
375 std::array< std::tuple< uint8_t, uint8_t, uint8_t, bool >, 4> copy_summary {
396 for (
auto [src_region, dest_xaod_summary_layer, dest_xaod_summary_hits, add_outlier] : copy_summary ) {
397 setSummaryValue(*track_particle,
400 setSummaryValue(*track_particle,
407 setSummaryValue(*track_particle,
411 setSummaryValue(*track_particle,
414 setSummaryValue(*track_particle,
420 setSummaryValue(*track_particle,
424 setSummaryValue(*track_particle,
427 setSummaryValue(*track_particle,
430 setSummaryValue(*track_particle,
433 setSummaryValue(*track_particle,
437 setSummaryValue(*track_particle,
442 std::array<unsigned int,4> expect_layer_pattern{};
443 if (precalculatedLayerPattern) {
457 : std::array<unsigned int,4> {0
u,0
u, 0
u,0
u} );
461 setSummaryValue(*track_particle,
462 static_cast<uint8_t>((expect_layer_pattern[0] & (1<<0)) != 0 ),
464 setSummaryValue(*track_particle,
465 static_cast<uint8_t>((expect_layer_pattern[0] & (1<<1)) != 0 ),
467 setSummaryValue(*track_particle,
470 setSummaryValue(*track_particle,
473 setSummaryValue(*track_particle,
476 setSummaryValue(*track_particle,
479 setSummaryValue(*track_particle,
482 setSummaryValue(*track_particle,
487 setSummaryValue(*track_particle,
490 setSummaryValue(*track_particle,
493 setSummaryValue(*track_particle,
496 setSummaryValue(*track_particle,
501 setSummaryValue(*track_particle,
502 static_cast<uint8_t> (biased_chi2_variance>0.
503 ?
std::min(
static_cast<unsigned int>(std::sqrt(biased_chi2_variance) * 100),255
u)
507 setSummaryValue(*track_particle,
515 tmp_param_state_idx[1]=tmp_param_state_idx.back();
516 tmp_param_state_idx.erase(tmp_param_state_idx.begin()+2,tmp_param_state_idx.end());
520 parametersVec.clear();
521 parametersVec.reserve(tmp_param_state_idx.size());
523 for(std::vector<ActsTrk::TrackStateBackend::ConstTrackStateProxy::IndexType>::const_reverse_iterator
524 idx_iter = tmp_param_state_idx.rbegin();
525 idx_iter != tmp_param_state_idx.rend();
528 ActsTrk::TrackStateBackend::ConstTrackStateProxy
529 state = tracksContainer->trackStateContainer().getTrackState(*idx_iter);
530 const Acts::BoundTrackParameters actsParam =
track.createParametersFromState(state);
532 Acts::Vector3 position = actsParam.position(gctx.
context());
533 Acts::Vector3
momentum = actsParam.momentum();
541 if (actsParam.covariance()) {
543 Acts::GeometryContext tgContext = gctx.
context();
545 magnFieldVect.setZero();
546 fieldCache.
getField(position.data(), magnFieldVect.data());
549 using namespace Acts::UnitLiterals;
550 magnFieldVect *= 1000_T;
554 if (curvilinear_cov_result.has_value()) {
555 Acts::BoundSquareMatrix &curvilinear_cov = curvilinear_cov_result.value();
558 for (
unsigned int col_i=0; col_i<4; ++col_i) {
559 curvilinear_cov(col_i,4) *= 1_MeV;
560 curvilinear_cov(4,col_i) *= 1_MeV;
562 curvilinear_cov(4,4) *= (1_MeV * 1_MeV);
564 std::size_t param_idx = parametersVec.size();
566 lowerTriangleToVector(curvilinear_cov,tmp_cov_vector,5);
567 if (tmp_cov_vector.size() != 15) {
568 ATH_MSG_ERROR(
"Invalid size of lower triangle cov " << tmp_cov_vector.size() <<
" != 15"
569 <<
" input matrix : " << curvilinear_cov.rows() <<
" x " << curvilinear_cov.cols() );
574 parametersVec.emplace_back(std::vector<float>{
575 static_cast<float>(position[0]),
static_cast<float>(position[1]),
static_cast<float>(position[2]),
577 ++converted_track_states;
581 for (
const std::vector<float> ¶m : parametersVec) {
582 if (param.size() != 6) {
583 ATH_MSG_ERROR(
"Invalid size of param element " << param.size() <<
" != 6" );
590 trackLink(*track_particle)
596 ATH_MSG_DEBUG(
"Converted " << nTracks <<
" acts tracks into " << track_particles->
size()
597 <<
" track particles with parameters for " << converted_track_states <<
" track states.");
599 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
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()
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.
◆ filterPassed()
◆ initialize()
StatusCode ActsTrk::TrackToTrackParticleCnvAlg::initialize |
( |
| ) |
|
|
overridevirtual |
Definition at line 130 of file TrackToTrackParticleCnvAlg.cxx.
132 std::vector<std::string> supportedStrategies {
"BeamLine",
"Vertex"};
133 bool isAllowedStrategy =
false;
134 for (
const std::string&
strategy : supportedStrategies) {
136 isAllowedStrategy =
true;
140 if (not isAllowedStrategy) {
141 ATH_MSG_ERROR(
"Wrong configuration of the Track to Track Particle Cnv algorithm: perigeeExpression is not supported");
142 return StatusCode::FAILURE;
148 else return StatusCode::FAILURE;
167 cfg.resolvePassive =
false;
168 cfg.resolveMaterial =
true;
169 cfg.resolveSensitive =
true;
170 auto navigtor_logger =
logger->cloneWithSuffix(
"Navigator");
171 m_propagator = std::make_unique<Propagator>(
Stepper(std::make_shared<ATLASMagneticFieldWrapper>()),
179 unsigned int collection_idx=0;
181 if (type <1 || type >2) {
182 ATH_MSG_ERROR(
"Invalid measurement type (" <<
type <<
") given for collection " << collection_idx <<
" : "
184 <<
". Expected 1 for pixel, 2 for strips.");
185 return StatusCode::FAILURE;
191 ATH_MSG_ERROR(
"Expected exactly one value in SiDetEleCollToMeasurementType per SiDetectorElementCollection. But got "
193 return StatusCode::FAILURE;
198 return StatusCode::SUCCESS;
◆ initParticleHypothesisMap()
void ActsTrk::TrackToTrackParticleCnvAlg::initParticleHypothesisMap |
( |
| ) |
|
|
staticprivate |
Definition at line 110 of file TrackToTrackParticleCnvAlg.cxx.
111 if (s_actsHypothesisToxAOD.empty()) {
112 s_actsHypothesisToxAOD.reserve(7);
113 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::eElectron ,
xAOD::electron) );
114 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::eMuon ,
xAOD::muon) );
115 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::ePionPlus ,
xAOD::pion) );
116 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::eProton ,
xAOD::proton) );
117 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::ePionZero ,
xAOD::pi0) );
118 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::eNeutron ,
xAOD::neutron) );
119 s_actsHypothesisToxAOD.push_back( std::make_pair( Acts::eGamma ,
xAOD::photon) );
◆ inputHandles()
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()
◆ makePerigeeSurface() [1/2]
std::shared_ptr< Acts::PerigeeSurface > ActsTrk::TrackToTrackParticleCnvAlg::makePerigeeSurface |
( |
const InDet::BeamSpotData * |
beamspotptr | ) |
|
|
staticprivate |
Definition at line 602 of file TrackToTrackParticleCnvAlg.cxx.
604 Acts::Vector3 beamspot(0., 0., 0.);
608 beamspot = Acts::Vector3(beamspot_data->beamVtx().position());
609 tiltx = beamspot_data->beamTilt(0);
610 tilty = beamspot_data->beamTilt(1);
612 Acts::Translation3 translation(beamspot);
613 Acts::Transform3
transform( translation * Acts::RotationMatrix3::Identity() );
614 transform *= Acts::AngleAxis3(tilty, Acts::Vector3(0.,1.,0.));
615 transform *= Acts::AngleAxis3(tiltx, Acts::Vector3(1.,0.,0.));
616 return Acts::Surface::makeShared<Acts::PerigeeSurface>(
transform);
◆ makePerigeeSurface() [2/2]
std::shared_ptr< Acts::PerigeeSurface > ActsTrk::TrackToTrackParticleCnvAlg::makePerigeeSurface |
( |
const xAOD::Vertex & |
vertex | ) |
|
|
staticprivate |
Definition at line 619 of file TrackToTrackParticleCnvAlg.cxx.
620 Acts::Translation3 translation(Acts::Vector3(
vertex.position()));
621 Acts::Transform3
transform( translation * Acts::RotationMatrix3::Identity() );
622 return Acts::Surface::makeShared<Acts::PerigeeSurface>(
transform);
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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.
◆ parametersAtPerigee()
Acts::BoundTrackParameters ActsTrk::TrackToTrackParticleCnvAlg::parametersAtPerigee |
( |
const EventContext & |
ctx, |
|
|
const typename ActsTrk::TrackContainer::ConstTrackProxy & |
track, |
|
|
const Acts::PerigeeSurface & |
perigee_surface |
|
) |
| const |
|
private |
Definition at line 625 of file TrackToTrackParticleCnvAlg.cxx.
628 const Acts::BoundTrackParameters trackParam =
track.createParametersAtReference();
630 std::optional<const Acts::BoundTrackParameters>
634 Acts::Direction::Backward(),
636 if (!perigeeParam.has_value()) {
637 ATH_MSG_WARNING(
"Failed to extrapolate to perigee, started from \n" << trackParam <<
" " << trackParam.referenceSurface().name() );
643 return perigeeParam.value();
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
◆ sysExecute()
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.
◆ sysInitialize()
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.
110 if (
sc.isFailure()) {
118 if ( cs.retrieve().isFailure() ) {
120 return StatusCode::SUCCESS;
122 if (cs->regHandle(
this,*
h).isFailure()) {
123 sc = StatusCode::FAILURE;
124 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ ATLAS_THREAD_SAFE
std::vector<std::pair<Acts::PdgParticle, xAOD::ParticleHypothesis> > s_actsHypothesisToxAOD ActsTrk::TrackToTrackParticleCnvAlg::ATLAS_THREAD_SAFE |
|
staticprivate |
◆ m_beamSpotKey
◆ m_computeExpectedLayerPattern
Gaudi::Property<bool> ActsTrk::TrackToTrackParticleCnvAlg::m_computeExpectedLayerPattern {this, "ComputeExpectedLayerPattern",true, "Compute the expected layer pattern. CPU expensive" } |
|
private |
◆ m_decorator_actsTracks
◆ m_detStore
◆ m_evtStore
◆ m_expectIfPixelContributes
Gaudi::Property<bool> ActsTrk::TrackToTrackParticleCnvAlg::m_expectIfPixelContributes {this, "expectIfPixelContribution",true, "Only expect pixel hits if there are pixel hits on track." } |
|
private |
◆ m_expression_strategy
◆ m_extendedExtraObjects
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_extrapolationTool
ToolHandle<IActsExtrapolationTool> ActsTrk::TrackToTrackParticleCnvAlg::m_extrapolationTool {this, "ExtrapolationTool", ""} |
|
private |
◆ m_fieldCacheCondObjInputKey
◆ m_firstAndLastParamOnly
Gaudi::Property<bool> ActsTrk::TrackToTrackParticleCnvAlg::m_firstAndLastParamOnly {this, "FirstAndLastParameterOnly",true, "Only convert the first and the last parameter." } |
|
private |
◆ m_paramExtrapolationParLimit
Gaudi::Property<double> ActsTrk::TrackToTrackParticleCnvAlg::m_paramExtrapolationParLimit {this, "ExtrapolationPathLimit",std::numeric_limits<double>::max(), "PathLimit for extrapolating track parameters." } |
|
private |
◆ m_perigeeExpression
Gaudi::Property<std::string> ActsTrk::TrackToTrackParticleCnvAlg::m_perigeeExpression {this, "PerigeeExpression", "DontRecalculate"} |
|
private |
◆ m_pixelExpectLayerPathLimitInMM
Gaudi::Property<double> ActsTrk::TrackToTrackParticleCnvAlg::m_pixelExpectLayerPathLimitInMM |
|
private |
Initial value:{this, "PixelExpectLayerPathLimitInMM",1000,
"PathLimit for extrapolating to get the expected pixel layer pattern in mm." }
Definition at line 107 of file TrackToTrackParticleCnvAlg.h.
◆ m_propagator
std::unique_ptr<Propagator> ActsTrk::TrackToTrackParticleCnvAlg::m_propagator |
|
private |
◆ m_siDetEleCollKey
◆ m_siDetEleCollToMeasurementType
Gaudi::Property<std::vector<unsigned int> > ActsTrk::TrackToTrackParticleCnvAlg::m_siDetEleCollToMeasurementType {this, "SiDetEleCollToMeasurementType",{}, "One value per si detector collection: Pixel = 1, Strip = 2"} |
|
private |
◆ m_trackingGeometryTool
◆ m_trackParticlesOutKey
◆ m_tracksContainerKey
◆ m_varHandleArraysDeclared
◆ m_vertexHandle
◆ m_vhka
The documentation for this class was generated from the following files:
@ neutron
for Fatras usage
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
void setTrackFitter(const TrackFitter fitter)
Method for setting the fitter, using the TrackFitter enum.
static std::shared_ptr< Acts::PerigeeSurface > makePerigeeSurface(const InDet::BeamSpotData *beamspotptr)
std::optional< Acts::BoundMatrix > convertActsBoundCovToCurvilinearParam(const Acts::GeometryContext &tgContext, const Acts::BoundTrackParameters ¶m, const Acts::Vector3 &magnFieldVect, const Acts::ParticleHypothesis &particle_hypothesis)
Convert the covariance of the given Acts track parameters into curvilinear parameterisation.
Gaudi::Property< bool > m_expectIfPixelContributes
Helper class to gather statistics and compute the biased variance.
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
void gatherTrackSummaryData(const ActsTrk::TrackContainer &tracksContainer, const typename ActsTrk::TrackContainer::ConstTrackProxy &track, const std::array< const InDetDD::SiDetectorElementCollection *, to_underlying(xAOD::UncalibMeasType::nTypes)> &siDetEleColl, const std::array< unsigned short, to_underlying(xAOD::UncalibMeasType::nTypes)> &measurement_to_summary_type, SumOfValues &chi2_stat_out, HitSummaryData &hit_info_out, std::vector< ActsTrk::TrackStateBackend::ConstTrackStateProxy::IndexType > ¶m_state_idx_out, std::array< std::array< uint8_t, to_underlying(HitCategory::N)>, to_underlying(xAOD::UncalibMeasType::nTypes)> &special_hit_counts_out)
Helper to gather track summary information from the track states of the specified track.
uint8_t contributingHits(DetectorRegion region) const
return the number of hits in a certain detector region.
Vertex_v1 Vertex
Define the latest version of the vertex class.
const_pointer_type cptr()
Dereference the pointer.
void setTrackParameters(std::vector< std::vector< float > > ¶meters)
Set the parameters via the passed vector of vectors.
constexpr std::underlying_type< T_EnumClass >::type to_underlying(T_EnumClass an_enum)
Helper to convert class enum into an integer.
@ numberOfContribPixelBarrelInclinedLayers
number of contributing barrel inclined layers of the pixel detector [unit8_t].
@ numberOfInnermostPixelLayerSharedEndcapHits
number of Pixel 0th layer endcap hits shared by several tracks.
@ BeamLine
Parameter defined at the Vertex/Beamline.
PublicToolHandle< ActsTrk::ITrackingGeometryTool > m_trackingGeometryTool
Gaudi::Property< bool > m_firstAndLastParamOnly
expressionStrategy m_expression_strategy
uint8_t contributingSharedHits(DetectorRegion region) const
return the number of shared hits in a certain detector region.
Acts::BoundTrackParameters parametersAtPerigee(const EventContext &ctx, const typename ActsTrk::TrackContainer::ConstTrackProxy &track, const Acts::PerigeeSurface &perigee_surface) const
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)
@ numberOfContribPixelBarrelFlatLayers
number of contributing barrel flat layers of the pixel detector [unit8_t].
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
void setDefiningParameters(float d0, float z0, float phi0, float theta, float qOverP)
Set the defining parameters.
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
void setTrackParameterCovarianceMatrix(unsigned int index, std::vector< float > &cov)
Set the cov matrix of the parameter at 'index', using a vector of floats.
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
const std::string & key() const
Return the StoreGate ID for the referenced object.
@ noHypothesis
For material collection.
@ u
Enums for curvilinear frames.
@ numberOfInnermostPixelLayerEndcapOutliers
number of 0th layer endcap outliers
void setBeamlineTiltY(float tiltY)
virtual void setOwner(IDataHandleHolder *o)=0
An algorithm that can be simultaneously executed in multiple threads.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
std::unique_ptr< const Acts::Logger > makeActsAthenaLogger(IMessageSvc *svc, const std::string &name, int level, std::optional< std::string > parent_name)
Acts::GeometryContext context() const
void setFitQuality(float chiSquared, float numberDoF)
Set the 'Fit Quality' information.
@ numberOfContribPixelEndcap
number of contributing endcap layers of the pixel detector [unit8_t].
@ numberOfInnermostPixelLayerOutliers
number of 0th layer barrel outliers
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
@ numberOfNextToInnermostPixelLayerSharedEndcapHits
number of Pixel 1st layer endcap hits shared by several tracks.
@ numberOfInnermostPixelLayerEndcapHits
these are the hits in the 0th pixel layer endcap [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
Helper class to gather hit summary information for e.g.
uint8_t contributingOutlierHits(DetectorRegion region) const
return the number of outliers in a certain detector region.
Acts::Navigator Navigator
SummaryType
Enumerates the different types of information stored in Summary.
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
@ numberOfPixelBarrelFlatHits
these are the pixel hits, in the barrel flat layers [unit8_t].
static void initParticleHypothesisMap()
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
static bool exists(track_container_t &trackContainer)
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Handle class for adding a decoration to an object.
uint8_t contributingLayers(DetectorRegion region) const
return the number of layers contributing to the hit collection in the given detector region.
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
SG::WriteDecorHandleKey< xAOD::TrackParticleContainer > m_decorator_actsTracks
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
@ numberOfPixelOutliers
these are the pixel outliers, including the b-layer [unit8_t].
iterator insert(iterator position, value_type pElem)
Add a new element to the collection.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
@ standardDeviationOfChi2OS
100 times the standard deviation of the chi2 from the surfaces [unit8_t].
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Gaudi::Property< bool > m_computeExpectedLayerPattern
void setParticleHypothesis(const ParticleHypothesis hypo)
Method for setting the particle type, using the ParticleHypothesis enum.
Include the GeoPrimitives which need to be put first.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
@ numberOfNextToInnermostPixelLayerEndcapHits
these are the hits in the 0.5th and 1st pixel layer endcap rings [unit8_t].
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
ElementLink implementation for ROOT usage.
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_trackParticlesOutKey
uint8_t sum(DetectorRegion region, uint8_t layer) const
return the total number of hits, outliers, and/or shared hits in the givrn detector region and layer.
@ KalmanFitter
tracks produced by the Kalman Fitter
@ numberOfNextToInnermostPixelLayerOutliers
number of 1st pixel layer barrel outliers
@ numberOfNextToInnermostPixelLayerHits
these are the hits in the 1st pixel barrel layer
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
StatusCode initialize(bool used=true)
Eigen::Matrix< double, 3, 1 > Vector3D
@ numberOfPixelBarrelInclinedHits
these are the pixel hits, in the barrel inclined layers [unit8_t].
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
void setDefiningParametersCovMatrixVec(const std::vector< float > &cov)
@ numberOfOutliersOnTrack
number of measurements flaged as outliers in TSOS [unit8_t].
std::array< unsigned int, 4 > expectedLayerPattern(const EventContext &ctx, const IActsExtrapolationTool &extrapolator, const Acts::BoundTrackParameters &perigee_parameters, double pathLimit)
Extrapolate from the perigee outwards and gather information which detector layers should have hits.
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Acts::EigenStepper<> Stepper
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Class describing a Vertex.
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
#define ATH_MSG_WARNING(x)
double biasedVariance() const
@ numberOfNextToInnermostPixelLayerEndcapOutliers
number of 1st layer endcap disk outliers
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Gaudi::Property< std::string > m_perigeeExpression
Gaudi::Property< double > m_pixelExpectLayerPathLimitInMM
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
@ SiSPSeededFinder
Tracks from SiSPSeedFinder.
void getField(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field value at given position xyz[3] is in mm, bxyz[3] is in kT if deriv[9] is given,...
std::unique_ptr< Propagator > m_propagator
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
virtual StatusCode sysInitialize() override
Override sysInitialize.
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelEndcapHits
these are the pixel hits, in the endcap layers [unit8_t].
SG::ReadHandleKeyArray< ActsTrk::TrackContainer > m_tracksContainerKey
Gaudi::Property< double > m_paramExtrapolationParLimit
static std::array< unsigned int, 4 > get(const track_proxy_t &track)
Class describing a TrackParticle.
const T * at(size_type n) const
Access an element, as an rvalue.
ToolHandle< IActsExtrapolationTool > m_extrapolationTool
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexHandle
Gaudi::Property< std::vector< unsigned int > > m_siDetEleCollToMeasurementType
static std::vector< std::pair< Acts::PdgParticle, xAOD::ParticleHypothesis > > s_actsHypothesisToxAOD ATLAS_THREAD_SAFE
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
DetectorRegion
Regions for which hit counts are computed.
SG::ReadCondHandleKeyArray< InDetDD::SiDetectorElementCollection > m_siDetEleCollKey
@ numberOfNextToInnermostPixelLayerSharedHits
number of Pixel 1st layer barrel hits shared by several tracks.
size_type size() const noexcept
Returns the number of elements in the collection.
void setBeamlineTiltX(float tiltX)
static xAOD::ParticleHypothesis convertParticleHypothesis(Acts::PdgParticle abs_pdg_id)
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
void setPatternRecognitionInfo(const std::bitset< xAOD::NumberOfTrackRecoInfo > &patternReco)
Method setting the pattern recognition algorithm, using a bitset.
const_pointer_type cptr()