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 ()
virtual StatusCode finalize ()
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
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

Protected Member Functions

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< 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()
Default constructor:
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< 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< 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< 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< 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 ( )
virtual

<

Todo
: include sorting of outliers

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

◆ finalize()

StatusCode Trk::ReFitTrack::finalize ( )
virtual

Definition at line 309 of file ReFitTrack.cxx.

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

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

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< 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< 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< 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< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setupConstrainedFit()

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

Definition at line 315 of file ReFitTrack.cxx.

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

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< 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< 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 79 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< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< 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: