ATLAS Offline Software
Loading...
Searching...
No Matches
Trk::ReFitTrack Class Reference

Algorithm using an instance of a ITrackFitter to refit the tracks of a given track collection. More...

#include <ReFitTrack.h>

Inheritance diagram for Trk::ReFitTrack:
Collaboration diagram for Trk::ReFitTrack:

Public Types

typedef Trk::Track Track

Public Member Functions

 ReFitTrack (const std::string &name, ISvcLocator *pSvcLocator)
 standard Algorithm constructor
virtual StatusCode initialize ()
virtual StatusCode execute (const EventContext &ctx)
 Execute method.
virtual StatusCode finalize ()
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
bool filterPassed (const EventContext &ctx) const
void setFilterPassed (bool state, const EventContext &ctx) const
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
const EventContext & getContext () const
 Deprecated methods (use the ones with EventContext).
bool filterPassed () const
void setFilterPassed (bool state) const

Protected Member Functions

virtual bool isReEntrant () const override final
 Legacy algorithms are not thread-safe.
void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

 ReFitTrack ()
 ReFitTrack (const ReFitTrack &)
ReFitTrackoperator= (const ReFitTrack &)
const Trk::RecVertexsetupConstrainedFit ()
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadHandleKey< TrackCollectionm_trackName
SG::WriteHandleKey< TrackCollectionm_newTrackName
Trk::RunOutlierRemoval m_runOutlier
 switch whether to run outlier logics or not
int m_matEffects
 type of material interaction in extrapolation
Trk::ParticleHypothesis m_ParticleHypothesis
 nomen est omen
const TrackCollectionm_tracks
 job option for main track collection
ToolHandle< Trk::ITrackFitterm_ITrackFitter
 the refit tool
ToolHandle< Trk::ITrackFitterm_ITrackFitterTRT
 the TRT refit tool
ToolHandle< Trk::IExtendedTrackSummaryToolm_trkSummaryTool
 the track summary tool
ToolHandle< Trk::IPRDtoTrackMapToolm_assoTool {this, "AssociationTool", "" }
 Tool to create and populate PRD to track association maps e.g.
ToolHandle< Trk::ITrackSelectorToolm_trkSelectorTool
 the track selector tool
unsigned int m_constrainFitMode
 0 - not constrained, 1 - vertex, 2 - beamspot
SG::ReadHandleKey< VxContainerm_vxContainerName
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_pixelDetEleCollKey {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollectionm_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
ToolHandle< Trk::IExtrapolatorm_extrapolator
 the extrapolator for the consistent measurement frame
bool m_usetrackhypo
 Fit using particle hypothesis from input track.
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Algorithm using an instance of a ITrackFitter to refit the tracks of a given track collection.

Constraint fits are available:

  • Option 1 : fit the track with the vertex (first vertex is taken)
  • Option 2 : fit the track with the beamspot
Author
Maria.nosp@m..Jos.nosp@m.e.Cos.nosp@m.ta@c.nosp@m.ern.c.nosp@m.h, Andre.nosp@m.as.S.nosp@m.alzbu.nosp@m.rger.nosp@m.@cern.nosp@m..ch

Definition at line 45 of file ReFitTrack.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

◆ Track

Definition at line 49 of file ReFitTrack.h.

Constructor & Destructor Documentation

◆ ReFitTrack() [1/3]

Trk::ReFitTrack::ReFitTrack ( const std::string & name,
ISvcLocator * pSvcLocator )

standard Algorithm constructor

Definition at line 36 of file ReFitTrack.cxx.

36 :
37 AthAlgorithm(name,pSvcLocator),
38 m_trackName("Tracks"),
39 m_newTrackName("ReFitted_Tracks"),
40 m_runOutlier(false),
41 m_matEffects(3),
43 m_tracks(nullptr),
44 m_ITrackFitter("TrkKalmanFitter/KalmanFitter"),
49 m_vxContainerName("VxPrimaryCandidate"),
50 m_extrapolator("Trk::Extrapolator/InDetExtrapolator"),
51 m_usetrackhypo(false)
52{
53
54 // Get parameter values from jobOptions file
55 declareProperty("TrackName", m_trackName, "collection name for tracks to be refitted");
56 declareProperty("NewTrackName", m_newTrackName, "collection name for output tracks");
57 declareProperty("FitterTool", m_ITrackFitter, "ToolHandle for track fitter implementation");
58 declareProperty("FitterToolTRT", m_ITrackFitterTRT, "ToolHandle for TRT track fitter implementation");
59 declareProperty("SummaryTool" , m_trkSummaryTool, "ToolHandle for track summary tool");
60 declareProperty("TrackSelectionTool", m_trkSelectorTool, "ToolHandle for track selection tool");
61 declareProperty("runOutlier", m_runOutlier, "switch to control outlier finding in track fit");
62 declareProperty("matEffects", m_matEffects, "type of material interaction in extrapolation");
63 declareProperty("useParticleHypothesisFromTrack", m_usetrackhypo,"fit with particle hypothesis from original track");
64
65 // constrained fitting
66 declareProperty("ConstrainFit", m_constrainFitMode,"mode switch if/how the track is constrained to the BS/Vx");
67 declareProperty("VertexCollection", m_vxContainerName,"Source for vertex to use for constraining tracks");
68 declareProperty("Extrapolator", m_extrapolator, "Extrapolator needed for coherent measurement frame.");
69
70
71}
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trkSummaryTool
the track summary tool
Definition ReFitTrack.h:80
const TrackCollection * m_tracks
job option for main track collection
Definition ReFitTrack.h:77
ToolHandle< Trk::ITrackSelectorTool > m_trkSelectorTool
the track selector tool
Definition ReFitTrack.h:85
Trk::RunOutlierRemoval m_runOutlier
switch whether to run outlier logics or not
Definition ReFitTrack.h:71
Trk::ParticleHypothesis m_ParticleHypothesis
nomen est omen
Definition ReFitTrack.h:73
SG::ReadHandleKey< TrackCollection > m_trackName
Definition ReFitTrack.h:67
SG::ReadHandleKey< VxContainer > m_vxContainerName
Definition ReFitTrack.h:88
ToolHandle< Trk::ITrackFitter > m_ITrackFitter
the refit tool
Definition ReFitTrack.h:78
int m_matEffects
type of material interaction in extrapolation
Definition ReFitTrack.h:72
unsigned int m_constrainFitMode
0 - not constrained, 1 - vertex, 2 - beamspot
Definition ReFitTrack.h:87
SG::WriteHandleKey< TrackCollection > m_newTrackName
Definition ReFitTrack.h:68
bool m_usetrackhypo
Fit using particle hypothesis from input track.
Definition ReFitTrack.h:95
ToolHandle< Trk::IExtrapolator > m_extrapolator
the extrapolator for the consistent measurement frame
Definition ReFitTrack.h:93
ToolHandle< Trk::ITrackFitter > m_ITrackFitterTRT
the TRT refit tool
Definition ReFitTrack.h:79

◆ ReFitTrack() [2/3]

Trk::ReFitTrack::ReFitTrack ( )
private

◆ ReFitTrack() [3/3]

Trk::ReFitTrack::ReFitTrack ( const ReFitTrack & )
private

Member Function Documentation

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ evtStore()

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.

◆ execute()

StatusCode Trk::ReFitTrack::execute ( const EventContext & ctx)
virtual

Execute method.

Provides access to the EventContext if needed but is non-const as opposed to AthReentrantAlgorithm.

<

Todo
: include sorting of outliers

Implements AthAlgorithm.

Definition at line 136 of file ReFitTrack.cxx.

137{
138 ATH_MSG_DEBUG ("ReFitTrack::execute()");
139 std::unique_ptr<Trk::PRDtoTrackMap> prd_to_track_map(m_assoTool->createPRDtoTrackMap());
140 SG::ReadHandle<TrackCollection> tracks (m_trackName, ctx);
141
142 if (!tracks.isValid()){
143 msg(MSG::ERROR) <<"Track collection named " << m_trackName.key()
144 << " not found, exit ReFitTrack." << endmsg;
145 return StatusCode::SUCCESS;
146 } else {
147 ATH_MSG_DEBUG ("Tracks collection '" << m_trackName.key() << "' retrieved from EventStore.");
148 }
149
150 ATH_MSG_DEBUG("Track fit configured with constrain option : " << m_constrainFitMode );
151
152 // Handle the various possible constraints.
153 std::unique_ptr<const Trk::PerigeeSurface> constrainSf;
154 std::unique_ptr<const Trk::RecVertex> constrainVx;
155
156 if (m_constrainFitMode > 0){
157 constrainVx.reset( setupConstrainedFit() );
158 }
159
160 // constrain surface (either BS of VTX)
161 if (constrainVx) {
162 constrainSf = std::make_unique<Trk::PerigeeSurface>( constrainVx->position());
163 }
164
166
167 // create new collection of tracks to write in storegate
168 // auto newtracks = std::make_unique<TrackCollection>();
169 std::vector<std::unique_ptr<Trk::Track> > new_tracks;
170
171 // loop over tracks
172 for (TrackCollection::const_iterator itr = (*tracks).begin(); itr < (*tracks).end(); ++itr){
173
174 ATH_MSG_VERBOSE ("input track:" << **itr);
175
176 if (m_usetrackhypo) hypo=(**itr).info().particleHypothesis();
177 std::unique_ptr<Trk::Track> newtrack;
178 bool trtonly=false;
179
180 bool passedSelection = true;
181 // check whether the track passes the selection
182 if (*itr && !m_trkSelectorTool.empty()){
183 passedSelection = m_trkSelectorTool->decision(**itr);
184 }
185
186
187 if (!m_ITrackFitterTRT.name().empty() && !m_trkSummaryTool.name().empty()){
188 ATH_MSG_VERBOSE ("Creating summary");
189 // @TODO does not need PRDtoTrackMap
190 unsigned int n_trt_hits;
191 if ((*itr)->trackSummary()) {
192 n_trt_hits = (*itr)->trackSummary()->get(numberOfTRTHits);
193 }
194 else {
195 std::unique_ptr<const Trk::TrackSummary> summary( m_trkSummaryTool->summaryNoHoleSearch(ctx, **itr) );
196 n_trt_hits = summary->get(numberOfTRTHits);
197 }
198 if ( (**itr).measurementsOnTrack()->size() - n_trt_hits<3 )
199 trtonly=true;
200 }
201
202 if (passedSelection) {
203 ATH_MSG_VERBOSE ("Passed selection");
204
205 const Trk::Perigee* origPerigee = (*itr)->perigeeParameters();
206 if (origPerigee){
207 double od0 = origPerigee->parameters()[Trk::d0];
208 double oz0 = origPerigee->parameters()[Trk::z0];
209 double ophi0 = origPerigee->parameters()[Trk::phi0];
210 double otheta = origPerigee->parameters()[Trk::theta];
211 double oqOverP = origPerigee->parameters()[Trk::qOverP];
212 ATH_MSG_DEBUG ("Original parameters " << od0 << " " << oz0 << " " << ophi0 << " " << otheta << " " << oqOverP);
213 }
214
215 // create a measurement for the beamspot
216 if (constrainVx && origPerigee){
217
218 ATH_MSG_VERBOSE ("Creating measurement for beamspot.");
219 // extrapolate the track to the vertex -- for consistent Measurement frame
220 std::unique_ptr<const Trk::TrackParameters> tp( m_extrapolator->extrapolateTrack(ctx,
221 **itr,
222 *constrainSf,
224 const Trk::Perigee* tpConstrainedSf = dynamic_cast<const Trk::Perigee*>(tp.get());
225 // create the vertex/beamsptOnTrack
226 std::unique_ptr<Trk::VertexOnTrack> bsvxOnTrack( tpConstrainedSf ? new Trk::VertexOnTrack(*constrainVx,*tpConstrainedSf) : nullptr );
227 std::vector<const MeasurementBase*> vec;
228 if (tpConstrainedSf) vec.push_back(bsvxOnTrack.get() );
229 // get the measurmentsOnTrack
230 const DataVector<const MeasurementBase>* measurementsOnTracks = (**itr).measurementsOnTrack();
231 // get the outliersOnTrack, needs sorting
233 // clone measurements and outliers into the track
234 DataVector<const MeasurementBase>::const_iterator measIter = measurementsOnTracks->begin();
235 DataVector<const MeasurementBase>::const_iterator measIterEnd = measurementsOnTracks->end();
236 for ( ; measIter != measIterEnd; ++measIter)
237 vec.push_back((*measIter));
238 // if - protect the outliers ...
239 // const DataVector<const MeasurementBase>* outliersOnTracks = (**itr).outliersOnTrack();
240 // measIter = outliersOnTracks->begin();
241 // measIterEnd = outliersOnTracks->end();
242 // for ( ; measIter != measIterEnd; ++measIter)
243 // vec.push_back((*measIter));
244 // refit with the beamspot / vertex
245 newtrack = ((trtonly ? m_ITrackFitterTRT : m_ITrackFitter)
246 ->fit(ctx,
247 vec,
248 *origPerigee,
250 hypo));
251 // now delete the vsvx
252 } else {
253 newtrack =
254 ((trtonly ? m_ITrackFitterTRT : m_ITrackFitter)
255 ->fit(ctx, **itr, m_runOutlier, hypo));
256 }
257 } // passed selection
258
259 if (msgLvl(MSG::DEBUG)) {
260 if (!newtrack) ATH_MSG_DEBUG ("Refit Failed");
261 else {
262
263 // ATH_MSG_VERBOSE ("re-fitted track:" << *newtrack);
264 const Trk::Perigee *aMeasPer=
265 dynamic_cast<const Trk::Perigee*>(newtrack->perigeeParameters () );
266 if (aMeasPer==nullptr){
267 msg(MSG::ERROR) << "Could not get Trk::MeasuredPerigee" << endmsg;
268 continue;
269 }
270 double d0 = aMeasPer->parameters()[Trk::d0];
271 double z0 = aMeasPer->parameters()[Trk::z0];
272 double phi0 = aMeasPer->parameters()[Trk::phi0];
273 double theta = aMeasPer->parameters()[Trk::theta];
274 double qOverP = aMeasPer->parameters()[Trk::qOverP];
275 ATH_MSG_DEBUG ("Refitted parameters " << d0 << " " << z0 << " " << phi0 << " " << theta << " " << qOverP);
276 }
277 }
278
279 if (newtrack) {
280 new_tracks.push_back(std::move(newtrack));
281 }
282
283 }
284
285 ATH_MSG_VERBOSE ("Add PRDs to assoc tool.");
286
287 // recreate the summaries on the final track collection with correct PRD tool
288 for(const std::unique_ptr<Trk::Track> &new_track : new_tracks ) {
289 if((m_assoTool->addPRDs(*prd_to_track_map, *new_track)).isFailure()) {ATH_MSG_WARNING("Failed to add PRDs to map");}
290 }
291
292 ATH_MSG_VERBOSE ("Recalculate the summary");
293 // and copy tracks from vector of non-const tracks to collection of const tracks
294 std::unique_ptr<TrackCollection> new_track_collection = std::make_unique<TrackCollection>();
295 new_track_collection->reserve(new_tracks.size());
296 for(std::unique_ptr<Trk::Track> &new_track : new_tracks ) {
297 m_trkSummaryTool->computeAndReplaceTrackSummary(ctx, *new_track, false /* DO NOT suppress hole search*/);
298 new_track_collection->push_back(std::move(new_track));
299 }
300
301 ATH_MSG_VERBOSE ("Save tracks");
302 ATH_CHECK(SG::WriteHandle<TrackCollection>(m_newTrackName, ctx).record(std::move(new_track_collection)));
303
304 return StatusCode::SUCCESS;
305}
#define endmsg
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
std::vector< size_t > vec
bool msgLvl(const MSG::Level lvl) const
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
const Trk::RecVertex * setupConstrainedFit()
ToolHandle< Trk::IPRDtoTrackMapTool > m_assoTool
Tool to create and populate PRD to track association maps e.g.
Definition ReFitTrack.h:82
@ anyDirection
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ phi0
Definition ParamDefs.h:65
@ theta
Definition ParamDefs.h:66
@ qOverP
perigee
Definition ParamDefs.h:67
@ d0
Definition ParamDefs.h:63
@ z0
Definition ParamDefs.h:64
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.

◆ 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 & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ filterPassed() [1/2]

bool AthAlgorithm::filterPassed ( ) const
inherited

Definition at line 94 of file AthAlgorithm.cxx.

94 {
95 return filterPassed( Gaudi::Hive::currentContext() );
96}
bool filterPassed() const

◆ filterPassed() [2/2]

bool AthAlgorithm::filterPassed ( const EventContext & ctx) const
inherited

Definition at line 98 of file AthAlgorithm.cxx.

98 {
99 return execState( ctx ).filterPassed();
100}

◆ finalize()

StatusCode Trk::ReFitTrack::finalize ( )
virtual

Definition at line 308 of file ReFitTrack.cxx.

309{
310 msg(MSG::INFO) << "ReFitTrack::finalize()" << endmsg;
311 return StatusCode::SUCCESS;
312}

◆ getContext()

const EventContext & AthAlgorithm::getContext ( ) const
inherited

Deprecated methods (use the ones with EventContext).

Definition at line 90 of file AthAlgorithm.cxx.

90 {
91 return Gaudi::Hive::currentContext();
92}

◆ initialize()

StatusCode Trk::ReFitTrack::initialize ( )
virtual

Definition at line 74 of file ReFitTrack.cxx.

75{
76 ATH_MSG_INFO("ReFitTrack::initialize()");
77
78 if (m_ITrackFitter.retrieve().isFailure()) {
79 msg(MSG::FATAL) << "Failed to retrieve tool "<<m_ITrackFitter.typeAndName()<<endmsg;
80 return StatusCode::FAILURE;
81 } else
82 msg(MSG::INFO) << "Retrieved general fitter " << m_ITrackFitter.typeAndName() << endmsg;
83
84 if (!m_ITrackFitterTRT.name().empty()){
85 if (m_ITrackFitterTRT.retrieve().isFailure()) {
86 msg(MSG::FATAL) << "Failed to retrieve tool " << m_ITrackFitterTRT.typeAndName()<<endmsg;
87 return StatusCode::FAILURE;
88 } else
89 msg(MSG::INFO) << "Retrieved fitter for TRT-only tracks " << m_ITrackFitterTRT.typeAndName() << endmsg;
90 }
91
92 if (!m_trkSummaryTool.name().empty()){
93 if (m_trkSummaryTool.retrieve().isFailure()) {
94 msg(MSG::FATAL) << "Failed to retrieve tool " << m_trkSummaryTool << endmsg;
95 return StatusCode::FAILURE;
96 } else
97 msg(MSG::INFO) << "Retrieved tool " << m_trkSummaryTool.typeAndName() << endmsg;
98 }
99 if ( m_assoTool.retrieve().isFailure() ) {
100 msg(MSG::FATAL) << "Failed to retrieve tool " << m_assoTool << endmsg;
101 return StatusCode::FAILURE;
102 } else ATH_MSG_INFO("Retrieved tool " << m_assoTool);
103
104 if (!m_trkSelectorTool.empty()){
105 if (m_trkSelectorTool.retrieve().isFailure()) {
106 msg(MSG::FATAL) << "Failed to retrieve tool " << m_trkSelectorTool << ". No Track Selection will be done." << endmsg;
107 return StatusCode::FAILURE;
108 } else
109 msg(MSG::INFO) << "Retrieved tool " << m_trkSelectorTool.typeAndName() << endmsg;
110 }
111
112 // beam conditions service
113 if (m_constrainFitMode) {
114 ATH_CHECK(m_beamSpotKey.initialize());
115 }
116
117 // extrapolator
118 if (m_constrainFitMode && m_extrapolator.retrieve().isFailure()){
119 ATH_MSG_FATAL( "Failed to retrieve " << m_extrapolator );
120 return StatusCode::FAILURE;
121 }
122
123 // Configuration of the material effects
125
126 ATH_CHECK( m_trackName.initialize() );
127 ATH_CHECK( m_vxContainerName.initialize() );
128 ATH_CHECK( m_newTrackName.initialize() );
129 ATH_CHECK( m_pixelDetEleCollKey.initialize() );
130 ATH_CHECK( m_SCTDetEleCollKey.initialize() );
131
132 return StatusCode::SUCCESS;
133}
#define ATH_MSG_FATAL(x)
#define ATH_MSG_INFO(x)
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition ReFitTrack.h:89
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_SCTDetEleCollKey
Definition ReFitTrack.h:92
SG::ReadCondHandleKey< InDetDD::SiDetectorElementCollection > m_pixelDetEleCollKey
Definition ReFitTrack.h:91
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

◆ 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.

◆ isReEntrant()

virtual bool AthAlgorithm::isReEntrant ( ) const
inlinefinaloverrideprotectedvirtualinherited

Legacy algorithms are not thread-safe.

Definition at line 111 of file AthAlgorithm.h.

111{ return false; }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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 }

◆ operator=()

ReFitTrack & Trk::ReFitTrack::operator= ( const ReFitTrack & )
private

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ setFilterPassed() [1/2]

void AthAlgorithm::setFilterPassed ( bool state) const
inherited

Definition at line 102 of file AthAlgorithm.cxx.

102 {
103 setFilterPassed( state, Gaudi::Hive::currentContext() );
104}
void setFilterPassed(bool state) const

◆ setFilterPassed() [2/2]

void AthAlgorithm::setFilterPassed ( bool state,
const EventContext & ctx ) const
inherited

Definition at line 106 of file AthAlgorithm.cxx.

106 {
107 execState( ctx ).setFilterPassed(state);
108}

◆ setupConstrainedFit()

const Trk::RecVertex * Trk::ReFitTrack::setupConstrainedFit ( )
private

Definition at line 314 of file ReFitTrack.cxx.

315{
316 // constrainVx
317 const Trk::RecVertex* constrainVx = nullptr;
318 if ( m_constrainFitMode == 2 ){
319 // Beamspot mode
320 SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle { m_beamSpotKey };
321 // get vertex position and uncertainties from BeamCondSvc
322 constrainVx = new Trk::RecVertex(beamSpotHandle->beamVtx());
323 ATH_MSG_DEBUG("Track fit with BeamSpot constraint (x/y/z) = "
324 << constrainVx->position().x() << ", "
325 << constrainVx->position().y() << ", "
326 << constrainVx->position().z());
327 } else if (m_constrainFitMode ==1){
328 // Vertex mode
329 SG::ReadHandle<VxContainer> vxContainer (m_vxContainerName);
330 ATH_MSG_DEBUG("Track fit with vertex from collection '" << m_vxContainerName.key() << "'.");
331 if (!vxContainer.isValid())
332 ATH_MSG_WARNING("Track fit configured to use vertex constraint, but '" << m_vxContainerName.key() << "' could not be retrieved.");
333 else if (vxContainer->size() == 1 ) {
334 ATH_MSG_WARNING("Track fit configured to use vertex constraint, but '" << m_vxContainerName.key() << "' contains only dummy vertex.");
335 } else {
336 // only refit to the 'signal' vertex
337 constrainVx = new Trk::RecVertex( (*vxContainer)[0]->recVertex() ); // Just copy it to simplify ownership.
338 ATH_MSG_DEBUG("Track fit with Vertex constraint (x/y/z) = "
339 << constrainVx->position().x() << ", "
340 << constrainVx->position().y() << ", "
341 << constrainVx->position().z());
342 }
343 } else {
344 ATH_MSG_WARNING("Unknown constraint mode: "<< m_constrainFitMode);
345 }
346 return constrainVx;
347}
const Amg::Vector3D & position() const
return position of vertex
Definition Vertex.cxx:63

◆ sysInitialize()

StatusCode AthAlgorithm::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 AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
#define ATH_MSG_ERROR(x)
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }

Member Data Documentation

◆ m_assoTool

ToolHandle<Trk::IPRDtoTrackMapTool> Trk::ReFitTrack::m_assoTool {this, "AssociationTool", "" }
private

Tool to create and populate PRD to track association maps e.g.

InDet::InDetPRDtoTrackMapToolGangedPixels

Definition at line 81 of file ReFitTrack.h.

82{this, "AssociationTool", "" };

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> Trk::ReFitTrack::m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" }
private

Definition at line 89 of file ReFitTrack.h.

89{ this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };

◆ m_constrainFitMode

unsigned int Trk::ReFitTrack::m_constrainFitMode
private

0 - not constrained, 1 - vertex, 2 - beamspot

Definition at line 87 of file ReFitTrack.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 AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 114 of file AthAlgorithm.h.

◆ m_extrapolator

ToolHandle<Trk::IExtrapolator> Trk::ReFitTrack::m_extrapolator
private

the extrapolator for the consistent measurement frame

Definition at line 93 of file ReFitTrack.h.

◆ m_ITrackFitter

ToolHandle<Trk::ITrackFitter> Trk::ReFitTrack::m_ITrackFitter
private

the refit tool

Definition at line 78 of file ReFitTrack.h.

◆ m_ITrackFitterTRT

ToolHandle<Trk::ITrackFitter> Trk::ReFitTrack::m_ITrackFitterTRT
private

the TRT refit tool

Definition at line 79 of file ReFitTrack.h.

◆ m_matEffects

int Trk::ReFitTrack::m_matEffects
private

type of material interaction in extrapolation

Definition at line 72 of file ReFitTrack.h.

◆ m_newTrackName

SG::WriteHandleKey<TrackCollection> Trk::ReFitTrack::m_newTrackName
private

Definition at line 68 of file ReFitTrack.h.

◆ m_ParticleHypothesis

Trk::ParticleHypothesis Trk::ReFitTrack::m_ParticleHypothesis
private

nomen est omen

Definition at line 73 of file ReFitTrack.h.

◆ m_pixelDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> Trk::ReFitTrack::m_pixelDetEleCollKey {this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"}
private

Definition at line 91 of file ReFitTrack.h.

91{this, "PixelDetEleCollKey", "PixelDetectorElementCollection", "Key of SiDetectorElementCollection for Pixel"};

◆ m_runOutlier

Trk::RunOutlierRemoval Trk::ReFitTrack::m_runOutlier
private

switch whether to run outlier logics or not

Definition at line 71 of file ReFitTrack.h.

◆ m_SCTDetEleCollKey

SG::ReadCondHandleKey<InDetDD::SiDetectorElementCollection> Trk::ReFitTrack::m_SCTDetEleCollKey {this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"}
private

Definition at line 92 of file ReFitTrack.h.

92{this, "SCTDetEleCollKey", "SCT_DetectorElementCollection", "Key of SiDetectorElementCollection for SCT"};

◆ m_trackName

SG::ReadHandleKey<TrackCollection> Trk::ReFitTrack::m_trackName
private

Definition at line 67 of file ReFitTrack.h.

◆ m_tracks

const TrackCollection* Trk::ReFitTrack::m_tracks
private

job option for main track collection

Definition at line 77 of file ReFitTrack.h.

◆ m_trkSelectorTool

ToolHandle<Trk::ITrackSelectorTool> Trk::ReFitTrack::m_trkSelectorTool
private

the track selector tool

Definition at line 85 of file ReFitTrack.h.

◆ m_trkSummaryTool

ToolHandle<Trk::IExtendedTrackSummaryTool> Trk::ReFitTrack::m_trkSummaryTool
private

the track summary tool

Definition at line 80 of file ReFitTrack.h.

◆ m_usetrackhypo

bool Trk::ReFitTrack::m_usetrackhypo
private

Fit using particle hypothesis from input track.

Definition at line 95 of file ReFitTrack.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.

◆ m_vxContainerName

SG::ReadHandleKey<VxContainer> Trk::ReFitTrack::m_vxContainerName
private

Definition at line 88 of file ReFitTrack.h.


The documentation for this class was generated from the following files: