 |
ATLAS Offline Software
|
Go to the documentation of this file.
29 ISvcLocator* pSvcLocator)
53 return StatusCode::SUCCESS;
59 ATH_MSG_INFO(
"====> GSF fitting Statistics ============");
61 ATH_MSG_INFO(
"Failed Fit Tracks: " << m_FailedFitTracks);
62 ATH_MSG_INFO(
"Not refitted due to selection: " << m_FailedSiliconRequirFit);
63 ATH_MSG_INFO(
"<========================================");
64 return StatusCode::SUCCESS;
87 std::make_unique<xAOD::TrackParticleContainer>(),
88 std::make_unique<xAOD::TrackParticleAuxContainer>()));
100 std::vector<const xAOD::TrackParticle*> siliconTrkTracks;
101 siliconTrkTracks.reserve(16);
102 std::vector<TrackWithIndex> trtAloneTrkTracks;
103 trtAloneTrkTracks.reserve(8);
106 ATH_CHECK(trackParticle->trackLink().isValid());
107 const Trk::Track* trktrack = trackParticle->track();
113 siliconTrkTracks.push_back(trackParticle);
116 trtAloneTrkTracks.emplace_back(std::make_unique<Trk::Track>(*trktrack),
117 trackParticle->index());
122 std::vector<TrackWithIndex> refitted;
123 refitted.reserve(siliconTrkTracks.size());
124 std::vector<TrackWithIndex> failedfit;
136 const size_t refittedCount = refitted.size();
137 const size_t failedCount = failedfit.size();
138 const size_t trtCount = trtAloneTrkTracks.size();
139 const size_t totalCount = refittedCount + failedCount + trtCount;
142 cPtrTracks->
reserve(totalCount);
143 cPtrTrkPart->
reserve(totalCount);
157 return StatusCode::SUCCESS;
162 const EventContext& ctx,
163 const std::vector<const xAOD::TrackParticle*>&
input,
164 std::vector<TrackWithIndex>& refitted,
165 std::vector<TrackWithIndex>& failedfit)
const
171 if (
status == StatusCode::SUCCESS) {
173 refitted.emplace_back(std::move(cache.refittedTrack), in->index());
176 failedfit.emplace_back(std::make_unique<Trk::Track>(*
track), in->index());
179 return StatusCode::SUCCESS;
184 const EventContext& ctx,
185 std::vector<TrackWithIndex>& refitted,
186 std::vector<TrackWithIndex>& failedfit,
187 std::vector<TrackWithIndex>& trtAlone,
194 for (
auto& trk : refitted) {
198 finalTrkPartContainer,
199 inputTrkPartContainer,
203 for (
auto& trk : failedfit) {
207 finalTrkPartContainer,
208 inputTrkPartContainer,
212 for (
auto& trk : trtAlone) {
216 finalTrkPartContainer,
217 inputTrkPartContainer,
220 return StatusCode::SUCCESS;
225 const EventContext& ctx,
230 bool isRefitted)
const
239 "Could not create TrackParticle!!! for Track: " << *(trk_info.
track));
240 return StatusCode::SUCCESS;
248 tP(
"originalTrackParticle");
250 *inputTrkPartContainer, origIndex, ctx);
251 tP(*aParticle) = linkToOriginal;
254 auto rtsos = trk_info.
track->trackStateOnSurfaces()->rbegin();
255 for (; rtsos != trk_info.
track->trackStateOnSurfaces()->
rend(); ++rtsos) {
257 (*rtsos)->trackParameters() !=
nullptr &&
258 (*rtsos)->measurementOnTrack() !=
nullptr &&
259 !(*rtsos)->measurementOnTrack()->type(
261 QoverPLast = (*rtsos)->trackParameters()->parameters()[
Trk::qOverP];
266 QoverPLM(*aParticle) = QoverPLast;
282 *finalTracks, finalTracks->
size() - 1, ctx);
284 return StatusCode::SUCCESS;
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
StatusCode createCollections(const EventContext &ctx, std::vector< TrackWithIndex > &refitted, std::vector< TrackWithIndex > &failedfit, std::vector< TrackWithIndex > &trtAlone, TrackCollection *finalTracks, xAOD::TrackParticleContainer *finalTrkPartContainer, const xAOD::TrackParticleContainer *inputTrkPartContainer) const
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackParticleContainerKey
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Gaudi::Property< bool > m_doSlimTrkTracks
Option to slim the Trk::Tracks.
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_selectedTrackParticleContainerKey
Names of input output collections.
Helper class to provide type-safe access to aux data.
void setTrackLink(const ElementLink< TrackCollection > &track)
Set the link to the original track.
ToolHandle< IegammaTrkRefitterTool > m_trkRefitTool
The track refitter.
Gaudi::Property< int > m_MinNoSiHits
@Cut on minimum silicon hits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
EMBremCollectionBuilder(const std::string &name, ISvcLocator *pSvcLocator)
An algorithm that can be simultaneously executed in multiple threads.
StatusCode createNew(const EventContext &ctx, TrackWithIndex &Info, TrackCollection *finalTracks, xAOD::TrackParticleContainer *finalTrkPartContainer, const xAOD::TrackParticleContainer *inputTrkPartContainer, bool isRefitted) const
SG::WriteHandleKey< xAOD::TrackParticleContainer > m_OutputTrkPartContainerKey
auto rend() const noexcept
Gaudi::Property< bool > m_doHGTD
Option to copy HGTD time to new gsf tracks.
Gaudi::Property< bool > m_doSCT
Option to copy SCT holes estimation.
Handle class for recording to StoreGate.
virtual StatusCode initialize() override final
ToolHandle< Trk::ITrackSlimmingTool > m_slimTool
Tool to slim tracks
::StatusCode StatusCode
StatusCode definition for legacy code.
pointer_type ptr()
Dereference the pointer.
std::atomic_uint m_FailedSiliconRequirFit
SG::WriteHandleKey< TrackCollection > m_OutputTrackContainerKey
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Helper struct to store the Trk::Track corresponding to a TrackParticle and the index of the Track Par...
virtual bool isValid() override final
Can the handle be successfully dereferenced?
int summaryValueInt(const xAOD::TrackParticle &tp, const xAOD::SummaryType &info, int deflt=-999)
return the summary value for a TrackParticle or default value (-999) (to be used mostly in python whe...
Gaudi::Property< bool > m_doTRT
Option to copy TRT holes estimation.
virtual StatusCode execute(const EventContext &ctx) const override final
std::atomic_uint m_RefittedTracks
Helpers for checking error return status codes and reporting errors.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
Gaudi::Property< bool > m_doTruth
Option to do truth.
void copy(xAOD::TrackParticle &created, const xAOD::TrackParticle &original, const egammaCopyTrackParticleInfo::ToCopy &toCopy)
const_pointer_type ptr()
Dereference the pointer.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
#define ATH_MSG_WARNING(x)
std::unique_ptr< Trk::Track > track
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ PseudoMeasurementOnTrack
std::atomic_uint m_FailedFitTracks
Class describing a TrackParticle.
const T * at(size_type n) const
Access an element, as an rvalue.
StatusCode refitTracks(const EventContext &ctx, const std::vector< const xAOD::TrackParticle * > &input, std::vector< TrackWithIndex > &refitted, std::vector< TrackWithIndex > &failedfit) const
Handle class for reading from StoreGate.
ToolHandle< Trk::ITrackParticleCreatorTool > m_particleCreatorTool
Tool to create track particle.
size_type size() const noexcept
Returns the number of elements in the collection.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
Gaudi::Property< bool > m_doPix
Option to copy pixel holes estimation.