 |
ATLAS Offline Software
|
#include <MooTrackBuilder.h>
|
| MooTrackBuilder (const std::string &, const std::string &, const IInterface *) |
| default AlgTool constructor More...
|
|
| ~MooTrackBuilder ()=default |
| destructor More...
|
|
virtual StatusCode | initialize () override |
| initialize method, method taken from bass-class AlgTool More...
|
|
virtual StatusCode | finalize () override |
| finialize method, method taken from bass-class AlgTool More...
|
|
virtual std::unique_ptr< Trk::Track > | refit (const EventContext &ctx, Trk::Track &track) const override |
| refit track More...
|
|
std::unique_ptr< MuonSegment > | combineToSegment (const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry, const PrepVec &patternPhiHits) const |
| Methos is used externally by MuonTrackSteering.cxx:233. Should be revised to put it into an interface. More...
|
|
virtual std::unique_ptr< MuonSegment > | combineToSegment (const EventContext &ctx, const MuonSegment &seg1, const MuonSegment &seg2, const PrepVec &patternPhiHits) const override |
| combine two segments to a super segment More...
|
|
virtual std::unique_ptr< Trk::Track > | combine (const EventContext &ctx, const MuonSegment &seg1, const MuonSegment &seg2, const PrepVec &patternPhiHits) const override |
| combine two segments to a track More...
|
|
virtual std::unique_ptr< Trk::Track > | combine (const EventContext &ctx, const Trk::Track &track, const MuonSegment &seg, const PrepVec &patternPhiHits) const override |
| combine a track with a segment More...
|
|
virtual std::unique_ptr< Trk::TrackParameters > | findClosestParameters (const Trk::Track &track, const Amg::Vector3D &pos) const override |
| find closest TrackParameters to the position. More...
|
|
virtual std::unique_ptr< Trk::TrackParameters > | getClosestParameters (const Trk::Track &track, const Trk::Surface &surf) const override |
| find closest TrackParameters to the surface. More...
|
|
std::unique_ptr< Trk::TrackParameters > | getClosestParameters (const MuPatCandidateBase &candidate, const Trk::Surface &surf) const |
| find closest TrackParameters to the surface. More...
|
|
virtual std::unique_ptr< Trk::Track > | recalibrateHitsOnTrack (const EventContext &ctx, const Trk::Track &track, bool doMdts, bool doCompetingClusters) const override |
| recalibrate hits on track More...
|
|
virtual std::vector< std::unique_ptr< MuPatTrack > > | find (const EventContext &ctx, MuPatCandidateBase &candidate, const std::vector< MuPatSegment * > &segments) const override |
| interface for tools to find track in the muon system starting from a vector of segments More...
|
|
virtual void | refine (const EventContext &ctx, MuPatTrack &track) const override |
| interface for tools which refine the hit content of a given track More...
|
|
| DeclareInterfaceID (Muon::IMuonSegmentTrackBuilder, 1, 0) |
| access to tool interface More...
|
|
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 | sysInitialize () override |
| Perform system initialization for an algorithm. 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 |
|
|
std::unique_ptr< Trk::Track > | combine (const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry, const PrepVec &patternPhiHits) const |
| combine two MCTBCandidateEntries More...
|
|
std::vector< std::unique_ptr< Trk::Track > > | combineWithSegmentFinding (const EventContext &ctx, const Trk::Track &track, const MuonSegment &seg, const PrepVec &patternPhiHits) const |
| find tracks by redoing the segment finding in the chamber of the segment More...
|
|
std::vector< std::unique_ptr< Trk::Track > > | combineWithSegmentFinding (const EventContext &ctx, const MuPatTrack &candidate, const MuPatSegment &segInfo, const PrepVec &patternPhiHits) const |
| find tracks by redoing the segment finding in the chamber of the segment More...
|
|
std::vector< std::unique_ptr< Trk::Track > > | combineWithSegmentFinding (const EventContext &ctx, const MuPatTrack &candidate, const Trk::TrackParameters &pars, const std::set< Identifier > &chIds, const PrepVec &patternPhiHits) const |
| find tracks by redoing the segment finding in the chamber of the segment More...
|
|
std::vector< std::unique_ptr< Trk::Track > > | combineWithSegmentFinding (const EventContext &ctx, const Trk::Track &track, const Trk::TrackParameters &pars, const std::set< Identifier > &chIds, const PrepVec &patternPhiHits) const |
| find tracks by redoing the segment finding in the chamber of the segment More...
|
|
std::pair< std::unique_ptr< Trk::Track >, std::unique_ptr< Trk::Track > > | splitTrack (const EventContext &ctx, const Trk::Track &track) const |
| split given track if it crosses the calorimeter volume, code assumes that the track was already extrapolated to the muon entry record using the MuonTrackExtrapolationTool. More...
|
|
bool | isSplitTrack (const EventContext &ctx, const Trk::Track &track1, const Trk::Track &track2) const |
| identify whether two track are split More...
|
|
TrackCollection * | mergeSplitTracks (const EventContext &ctx, const TrackCollection &tracks) const |
| look for split tracks in collection and merge them More...
|
|
void | removeDuplicateWithReference (std::unique_ptr< Trk::SegmentCollection > &segments, std::vector< const MuonSegment * > &referenceSegments) const |
|
Trk::TrackStates::const_iterator | insertClustersWithCompetingRotCreation (const EventContext &ctx, Trk::TrackStates::const_iterator tsit, Trk::TrackStates::const_iterator tsit_end, std::vector< std::unique_ptr< const Trk::TrackStateOnSurface >> &states) 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< MooTrackFitter > | m_fitter {this, "Fitter", "Muon::MooTrackFitter/MooTrackFitter", "Tool to fit segments to tracks"} |
|
ToolHandle< MooTrackFitter > | m_slFitter {this, "SLFitter", "Muon::MooTrackFitter/MooSLTrackFitter", "Tool to fit segments to tracks"} |
|
ToolHandle< MuPatCandidateTool > | m_candidateHandler |
| candidate handler More...
|
|
ToolHandle< MooCandidateMatchingTool > | m_candidateMatchingTool |
|
ToolHandle< IMuonTrackToSegmentTool > | m_trackToSegmentTool |
|
ServiceHandle< IMuonEDMHelperSvc > | m_edmHelperSvc |
|
PublicToolHandle< MuonEDMPrinterTool > | m_printer |
| tool to print out EDM objects; More...
|
|
ServiceHandle< Muon::IMuonIdHelperSvc > | m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"} |
|
ToolHandle< IMuonSeededSegmentFinder > | m_seededSegmentFinder |
|
ToolHandle< IMdtDriftCircleOnTrackCreator > | m_mdtRotCreator |
|
ToolHandle< IMuonCompetingClustersOnTrackCreator > | m_compRotCreator |
|
ToolHandle< Trk::IPropagator > | m_propagator {this, "Propagator", "Trk::STEP_Propagator/MuonPropagator"} |
|
ToolHandle< Trk::IResidualPullCalculator > | m_pullCalculator |
|
ToolHandle< IMuonHoleRecoveryTool > | m_muonChamberHoleRecoverTool |
|
ToolHandle< IMuonTrackExtrapolationTool > | m_trackExtrapolationTool |
|
ToolHandle< IMuonErrorOptimisationTool > | m_errorOptimisationTool {this, "ErrorOptimisationTool", ""} |
|
ToolHandle< Trk::IExtendedTrackSummaryTool > | m_trackSummaryTool {this, "TrackSummaryTool", "MuonTrackSummaryTool"} |
|
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > | m_fieldCacheCondObjInputKey |
|
Trk::MagneticFieldProperties | m_magFieldProperties {Trk::FullField} |
| magnetic field properties More...
|
|
Gaudi::Property< bool > | m_doTimeOutChecks {this, "UseTimeOutGuard", true} |
| on/off time out check More...
|
|
Gaudi::Property< bool > | m_useExclusionList |
| use exclusion list (bit faster at the price of missing chambers) More...
|
|
Gaudi::Property< bool > | m_useTrackingHistory |
| use history of the track finding up to now to avoid creating duplicates More...
|
|
Gaudi::Property< bool > | m_recalibrateMDTHits {this, "RecalibrateMDTHitsOnTrack", true} |
|
std::atomic_uint | m_ncalls {0} |
|
std::atomic_uint | m_nTimedOut {0} |
|
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 |
|
Tool to combine two segments or a track and a segment to a track. In addition it offers the possibility to combine two segments to one larger segment.
The tool can either be configured to perform a straight line association or an association in the magnetic field.
The following steps are performed:
- simple match of the input using the MuonSegmentTrackMatcher
- if match successfull, fit of the input using the MuonSegmentTrackFitter
- if a track was found, cleaning of the track using the MuonTrackCleaner
- final decision whether to keep track or not
For more details look at the mainpage of this package.
Definition at line 82 of file MooTrackBuilder.h.
◆ PrepCit
◆ PrepIt
◆ PrepVec
◆ StoreGateSvc_t
◆ MooTrackBuilder()
Muon::MooTrackBuilder::MooTrackBuilder |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
default AlgTool constructor
Definition at line 30 of file MooTrackBuilder.cxx.
31 declareInterface<IMuonSegmentTrackBuilder>(
this);
32 declareInterface<MooTrackBuilder>(
this);
33 declareInterface<IMuonTrackRefiner>(
this);
34 declareInterface<IMuonTrackBuilder>(
this);
◆ ~MooTrackBuilder()
Muon::MooTrackBuilder::~MooTrackBuilder |
( |
| ) |
|
|
default |
◆ combine() [1/3]
combine two segments to a track
- Parameters
-
seg1 | the first segment |
seg2 | the second segment |
externalPhiHits | if provided, the external phi hits will be used instead of the phi hits on the segment |
- Returns
- a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 151 of file MooTrackBuilder.cxx.
156 if (!segInfo1) {
return nullptr; }
158 if (!segInfo2) {
return nullptr; }
161 return combine(ctx, *segInfo1, *segInfo2, externalPhiHits);
◆ combine() [2/3]
combine two MCTBCandidateEntries
- Parameters
-
firstEntry | the first entry |
secondEntry | the second entry |
externalPhiHits | if provided, the external phi hits will be used instead of the phi hits on the segment |
- Returns
- a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
Definition at line 178 of file MooTrackBuilder.cxx.
188 std::set<MuonStationIndex::StIndex> stations = firstCandidate.stations();
189 stations.insert(secondCandidate.stations().begin(), secondCandidate.stations().end());
190 unsigned int nstations = stations.size();
201 fieldCondObj->getInitializedCache(fieldCache);
202 using namespace MuonStationIndex;
203 bool slFit = !fieldCache.
toroidOn() || nstations == 1 ||
208 for (std::set<StIndex>::const_iterator
it = stations.begin();
it != stations.end(); ++
it) {
219 const MuPatTrack* trkCan1 =
dynamic_cast<const MuPatTrack*
>(&firstCandidate);
220 const MuPatTrack* trkCan2 =
dynamic_cast<const MuPatTrack*
>(&secondCandidate);
222 const MuPatSegment* segCan1 =
dynamic_cast<const MuPatSegment*
>(&firstCandidate);
223 const MuPatSegment* segCan2 =
dynamic_cast<const MuPatSegment*
>(&secondCandidate);
225 const MuPatTrack* candidate =
nullptr;
226 const MuPatSegment*
segment =
nullptr;
227 if (trkCan1 && segCan2) {
230 }
else if (trkCan2 && segCan1) {
238 const std::vector<MuPatSegment*>& excl = candidate->excludedSegments();
248 std::set<const MuPatSegment*> segments;
249 if ((segCan1 && segCan2)) {
250 segments.insert(segCan1);
251 segments.insert(segCan2);
255 segments.insert(candidate->segments().begin(), candidate->segments().end());
259 for (
const MuPatSegment*
used : segments) {
261 for (
const MuPatTrack* assoc_track :
used->tracks()) {
263 std::set<const MuPatSegment*> foundSegments;
264 for (
const MuPatSegment* segOnTrack : assoc_track->segments()) {
265 if (segments.count(segOnTrack)) foundSegments.insert(segOnTrack);
268 if (foundSegments.size() == segments.size()) {
269 ATH_MSG_DEBUG(
"Combination already part of an existing track");
274 if (candidate && !candidate->excludedSegments().empty() && foundSegments.size() == segments.size() - 1) {
276 std::vector<const MuPatSegment*> unassociatedSegments(segments.size(),
nullptr);
278 segments.begin(), segments.end(), foundSegments.begin(), foundSegments.end(), unassociatedSegments.begin());
279 const MuPatSegment*
zero =
nullptr;
280 unassociatedSegments.erase(
std::find(unassociatedSegments.begin(), unassociatedSegments.end(),
zero),
281 unassociatedSegments.end());
284 if (
it != unassociatedSegments.begin()) {
286 if (unassociatedSegments.size() != 1) {
287 ATH_MSG_DEBUG(
"Inconsistent result from set difference: size result "
288 << unassociatedSegments.size() <<
" candidate " << segments.size() <<
" found "
289 << foundSegments.size());
294 if (!segments.count(unassociatedSegments.front())) {
295 ATH_MSG_DEBUG(
"Segment point not part of the original set, aborting!");
300 std::vector<MuPatSegment*>::const_iterator
pos =
std::find(
301 candidate->excludedSegments().begin(), candidate->excludedSegments().end(), unassociatedSegments.front());
302 if (
pos != candidate->excludedSegments().end()) {
303 ATH_MSG_DEBUG(
"Segment found in exclusion list, not performing fit");
313 if (slFit)
return std::unique_ptr<Trk::Track>(
m_slFitter->fit(ctx, firstCandidate, secondCandidate, externalPhiHits));
315 return m_fitter->fit(ctx, firstCandidate, secondCandidate, externalPhiHits);
◆ combine() [3/3]
combine a track with a segment
- Parameters
-
track | a track |
seg | a segment |
externalPhiHits | if provided, the external phi hits will be used instead of the phi hits on the segment |
- Returns
- a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 318 of file MooTrackBuilder.cxx.
322 std::unique_ptr<Trk::Track> inTrack = std::make_unique<Trk::Track>(
track);
324 if (!candidate)
return nullptr;
326 if (!segInfo) {
return nullptr; }
329 return combine(ctx, *candidate, *segInfo, externalPhiHits);
◆ combineToSegment() [1/2]
combine two segments to a super segment
- Parameters
-
seg1 | the first segment |
seg2 | the second segment |
externalPhiHits | if provided, the external phi hits will be used instead of the phi hits on the segment |
- Returns
- a pointer to the combined segment, will return zero if combination failed. Ownership passed to user.
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 138 of file MooTrackBuilder.cxx.
140 std::unique_ptr<Trk::Track>
track =
combine(ctx, seg1, seg2, externalPhiHits);
142 if (!
track)
return nullptr;
◆ combineToSegment() [2/2]
Methos is used externally by MuonTrackSteering.cxx:233. Should be revised to put it into an interface.
combine two MCTBCandidateEntries
- Parameters
-
firstEntry | the first entry |
secondEntry | the second entry |
externalPhiHits | if provided, the external phi hits will be used instead of the phi hits on the segment |
- Returns
- a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
Definition at line 164 of file MooTrackBuilder.cxx.
167 std::unique_ptr<Trk::Track>
track =
combine(ctx, firstCandidate, secondCandidate, externalPhiHits);
169 if (!
track)
return nullptr;
◆ combineWithSegmentFinding() [1/4]
find tracks by redoing the segment finding in the chamber of the segment
- Parameters
-
- Returns
- a pointer to vector of tracks, the ownership of the vector and the tracks is passed to the client calling the tool.
second stage segment matching:
- estimate segment parameters at segment position using fit of track + segment position
- redo segment finding using the predicted parameters as seed
- redo segment association
Definition at line 426 of file MooTrackBuilder.cxx.
436 std::vector<std::unique_ptr<Trk::Track> > newTracks;
441 if (chIds.empty())
return newTracks;
446 std::unique_ptr<Trk::Track> newtrack(
m_fitter->fit(ctx, candidate, segInfo, externalPhiHits));
447 if (newtrack) newTracks.push_back(std::move(newtrack));
469 std::unique_ptr<Trk::TrackParameters> exPars(
◆ combineWithSegmentFinding() [2/4]
find tracks by redoing the segment finding in the chamber of the segment
- Parameters
-
candidate | a reference to a MuPatTrack |
pars | predicted track parameters in first chamber |
chIds | identifiers of the chambers in which the search should be performed (should be in same station layer) |
- Returns
- a pointer to vector of tracks, the ownership of the vector and the tracks is passed to the client calling the tool.
Definition at line 539 of file MooTrackBuilder.cxx.
543 std::vector<std::unique_ptr<Trk::Track> > newTracks;
545 if (chIds.empty())
return newTracks;
548 ATH_MSG_WARNING(
"combineWithSegmentFinding called with CSC hits!! retuning zero pointer");
560 if (segments->
empty()) {
565 unsigned int nseg = segments->
size();
567 std::vector<const MuonSegment*> referenceSegments;
568 for (std::vector<MuPatSegment*>::const_iterator esit = candidate.excludedSegments().begin();
569 esit != candidate.excludedSegments().end(); ++esit) {
570 if ((*esit)->segment) referenceSegments.push_back((*esit)->segment);
577 <<
" Rejected segments based on exclusion list, number of removed segments: " << nseg - segments->
size()
581 if (!segments->
empty()) {
593 <<
m_printer->print(candidate.track().measurementsOnTrack()->stdcont()) <<
endmsg;
602 std::unique_ptr<Trk::Track> segTrack =
m_fitter->fit(ctx, candidate, *segInfo, externalPhiHits);
604 if (!segTrack)
continue;
607 newTracks.push_back(std::move(segTrack));
611 if (!newTracks.empty())
ATH_MSG_DEBUG(
" found new tracks for segment " << newTracks.size());
◆ combineWithSegmentFinding() [3/4]
find tracks by redoing the segment finding in the chamber of the segment
- Parameters
-
- Returns
- a pointer to vector of tracks, the ownership of the vector and the tracks is passed to the client calling the tool.
Definition at line 332 of file MooTrackBuilder.cxx.
336 std::unique_ptr<Trk::Track> inTrack = std::make_unique<Trk::Track>(
track);
338 if (!candidate)
return {};
340 if (!segInfo)
return {};
◆ combineWithSegmentFinding() [4/4]
find tracks by redoing the segment finding in the chamber of the segment
- Parameters
-
track | a reference to a Track |
pars | predicted track parameters in first chamber |
chIds | identifiers of the chambers in which the search should be performed (should be in same station layer) |
- Returns
- a pointer to vector of tracks, the ownership of the vector and the tracks is passed to the client calling the tool.
Definition at line 415 of file MooTrackBuilder.cxx.
420 std::unique_ptr<Trk::Track> inTrack = std::make_unique<Trk::Track>(
track);
422 if (!
can) {
return {}; }
◆ 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]
◆ DeclareInterfaceID()
◆ 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);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ 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.
338 return PBASE::declareProperty(
name, property,
doc);
◆ 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]
◆ 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
◆ finalize()
StatusCode Muon::MooTrackBuilder::finalize |
( |
| ) |
|
|
overridevirtual |
finialize method, method taken from bass-class AlgTool
Definition at line 60 of file MooTrackBuilder.cxx.
65 return StatusCode::SUCCESS;
◆ find()
interface for tools to find track in the muon system starting from a vector of segments
- Parameters
-
segments | a vector of input segments in a given chamber layer |
- Returns
- a pointer to a vector of MuPatTrack objects, zero if no tracks are found. The ownership of the tracks is passed to the client calling the tool.
Implements Muon::IMuonTrackBuilder.
Definition at line 918 of file MooTrackBuilder.cxx.
920 std::vector<std::unique_ptr<MuPatTrack> >
candidates;
924 std::set<MuPatSegment*> usedSegments;
925 std::map<MuPatSegment*, MuPatSegment*> slSegments;
928 bool tightQualityCuts =
false;
934 std::vector<std::pair<MuPatSegment*, std::unique_ptr<Trk::Track> > >
extensions;
938 for (MuPatSegment* seg : segVec) {
939 if (usedSegments.count(seg))
continue;
942 if (candidate.shareChambers(*seg)) {
948 ATH_MSG_VERBOSE(
" track/segment combination rejected based on angular matching " << std::endl
956 std::unique_ptr<Trk::Track>
track =
combine(ctx, candidate, *seg, emptyPhiHits);
959 MuPatTrack* trkCan =
dynamic_cast<MuPatTrack*
>(&candidate);
960 MuPatSegment* segCan =
dynamic_cast<MuPatSegment*
>(&candidate);
963 trkCan->addExcludedSegment(seg);
970 ATH_MSG_VERBOSE(
" rejecting track as new segment results in worse fit");
976 std::set<MuonStationIndex::StIndex> stationLayersOnTrack;
979 if (!
id.is_valid() ||
m_idHelperSvc->isTrigger(
id)) {
continue; }
980 stationLayersOnTrack.insert(
m_idHelperSvc->stationIndex(
id));
983 bool hasAllLayers =
true;
985 if (!stationLayersOnTrack.count(stIdx)) {
987 hasAllLayers =
false;
992 ATH_MSG_VERBOSE(
" rejecting track as one of the chamber layers of the candidate was removed ");
997 if (!
track) {
continue; }
999 usedSegments.insert(seg);
1003 if (!seg->hasSLOverlap()) {
1004 std::unique_ptr<MuPatTrack> newCandidate;
1006 for (MuPatSegment* seg_1 : segVec) {
1008 if (seg->chIndex == seg_1->chIndex)
continue;
1010 if (!newCandidate) {
1011 std::unique_ptr<Trk::Track> trkTrkCan = std::make_unique<Trk::Track>(*
track);
1014 newCandidate = std::make_unique<MuPatTrack>(*trkCan);
1016 }
else if (segCan) {
1019 if (!newCandidate)
break;
1022 ATH_MSG_VERBOSE(
"track/segment combination rejected based on angular matching "
1029 std::unique_ptr<Trk::Track> slOverlapTrack =
combine(ctx, *
track, *seg_1->segment, emptyPhiHits);
1030 if (!slOverlapTrack)
continue;
1035 ATH_MSG_VERBOSE(__FILE__<<
":"<<__LINE__<<
" rejecting track as new segment results in worse fit");
1039 <<
m_printer->printStations(*slOverlapTrack));
1041 track.swap(slOverlapTrack);
1042 usedSegments.insert(seg_1);
1043 slSegments[seg] = seg_1;
1060 MuPatTrack* trkCan =
dynamic_cast<MuPatTrack*
>(&candidate);
1061 MuPatSegment* segCan =
dynamic_cast<MuPatSegment*
>(&candidate);
1065 for (std::pair<MuPatSegment*, std::unique_ptr<Trk::Track> >& ext_itr :
extensions) {
1066 std::unique_ptr<MuPatTrack> newCandidate;
1069 newCandidate = std::make_unique<MuPatTrack>(*trkCan);
1070 m_candidateHandler->extendWithSegment(*newCandidate, *ext_itr.first, ext_itr.second);
1071 }
else if (segCan) {
1072 newCandidate =
m_candidateHandler->createCandidate(*segCan, *ext_itr.first, ext_itr.second);
1075 MuPatSegment* slOverlap = slSegments[ext_itr.first];
1080 std::unique_ptr<Trk::Track> nullTrack;
1081 newCandidate->addSegment(slOverlap, nullTrack);
1083 candidates.push_back(std::move(newCandidate));
◆ findClosestParameters()
find closest TrackParameters to the position.
Closest is defined as closest in z in the endcap and closest in r in the barrel.
- Parameters
-
track | a reference to a Track |
pos | a reference to a GlobalPosition |
- Returns
- a pointer to TrackParameters, the ownership of the parameters is passed to the client calling the tool.
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 345 of file MooTrackBuilder.cxx.
350 double posSeg = isEndcap ?
pos.z() :
pos.perp();
353 double closest = 1e8;
355 bool closestIsMeasured =
false;
367 for (; tsit != tsit_end; ++tsit) {
370 if (!meas) {
continue; }
373 if (!
pars) {
continue; }
376 bool isMeasured =
pars->covariance();
379 if (closestIsMeasured && !isMeasured)
continue;
382 double posPars = isEndcap ?
pars->position().z() :
pars->position().perp();
383 double diffPos = std::abs(posPars - posSeg);
386 if ((isMeasured && !closestIsMeasured) || diffPos < closest) {
388 closestParameters =
pars;
389 closestIsMeasured = isMeasured;
392 if (closest < 100.) {
break; }
397 if (closestParameters)
return closestParameters->
uniqueClone();
◆ getClosestParameters() [1/2]
find closest TrackParameters to the surface.
The distance is calculated along the track
- Parameters
-
- Returns
- a pointer to TrackParameters, the ownership of the parameters is passed to the client calling the tool.
Definition at line 401 of file MooTrackBuilder.cxx.
403 const MuPatSegment* segCandidate =
dynamic_cast<const MuPatSegment*
>(&candidate);
404 if (segCandidate)
return segCandidate->entryPars().uniqueClone();
407 const MuPatTrack& trkCandidate =
dynamic_cast<const MuPatTrack&
>(candidate);
◆ getClosestParameters() [2/2]
find closest TrackParameters to the surface.
The distance is calculated along the track
- Parameters
-
- Returns
- a pointer to TrackParameters, the ownership of the parameters is passed to the client calling the tool.
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 411 of file MooTrackBuilder.cxx.
◆ initialize()
StatusCode Muon::MooTrackBuilder::initialize |
( |
| ) |
|
|
overridevirtual |
initialize method, method taken from bass-class AlgTool
Definition at line 37 of file MooTrackBuilder.cxx.
57 return StatusCode::SUCCESS;
◆ 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.
◆ insertClustersWithCompetingRotCreation()
Definition at line 722 of file MooTrackBuilder.cxx.
727 if (tsit == tsit_end) {
728 ATH_MSG_WARNING(
" iterator pointing to end of vector, this should no happen ");
735 if (!meas || !
pars) {
736 ATH_MSG_WARNING(
" iterator pointing to a TSOS without a measurement or TrackParameters ");
737 if (tsit + 1 == tsit_end) --tsit;
745 std::list<const Trk::PrepRawData*> etaPrds;
746 std::list<const Trk::PrepRawData*> phiPrds;
748 std::vector<std::unique_ptr<const Trk::TrackStateOnSurface> > newStates;
750 std::vector<std::pair<bool, const Trk::TrackStateOnSurface*> > outlierStates;
751 bool hasPhi {
false}, hasEta{
false};
753 for (; tsit != tsit_end; ++tsit) {
755 if (!in_tsos)
continue;
760 newStates.emplace_back(in_tsos->
clone());
766 if (!
id.is_valid()) {
767 newStates.emplace_back(in_tsos->
clone());
775 if (!hasPhi && measuresPhi) hasPhi =
true;
776 if (!hasEta && !measuresPhi) hasEta =
true;
780 outlierStates.emplace_back(measuresPhi, in_tsos);
788 std::list<const Trk::PrepRawData*>& prdList = measuresPhi ? phiPrds : etaPrds;
789 const MuonClusterOnTrack* clus =
dynamic_cast<const MuonClusterOnTrack*
>(meas);
792 if (!currentDetEl) currentDetEl = detEl;
793 if (detEl != currentDetEl) {
797 prdList.push_back(clus->prepRawData());
800 const CompetingMuonClustersOnTrack*
comp =
dynamic_cast<const CompetingMuonClustersOnTrack*
>(meas);
803 if (
comp->containedROTs().empty()) {
807 detEl =
comp->containedROTs().front()->detectorElement();
808 if (!currentDetEl) currentDetEl = detEl;
809 if (detEl != currentDetEl) {
813 std::vector<const MuonClusterOnTrack*>::const_iterator clit =
comp->containedROTs().begin();
814 std::vector<const MuonClusterOnTrack*>::const_iterator clit_end =
comp->containedROTs().end();
815 for (; clit != clit_end; ++clit) { prdList.push_back((*clit)->prepRawData()); }
825 if (!etaPrds.empty()) {
826 std::unique_ptr<CompetingMuonClustersOnTrack> etaCompRot =
m_compRotCreator->createBroadCluster(etaPrds, 0.);
828 ATH_MSG_WARNING(
" Failed to create CompetingMuonClustersOnTrack for eta hits! ");
830 std::unique_ptr<Trk::TrackParameters> etaPars;;
832 if (etaCompRot->associatedSurface() ==
pars->associatedSurface()) {
833 etaPars =
pars->uniqueClone();
838 etaCompRot->associatedSurface(),
842 ATH_MSG_WARNING(
" Failed to calculate TrackParameters for eta hits! ");
844 std::unique_ptr<Trk::TrackStateOnSurface> tsos =
846 newStates.push_back(std::move(tsos));
851 if (!phiPrds.empty()) {
852 std::unique_ptr<CompetingMuonClustersOnTrack> phiCompRot =
m_compRotCreator->createBroadCluster(phiPrds, 0.);
854 ATH_MSG_WARNING(
" Failed to create CompetingMuonClustersOnTrack for phi hits! ");
856 std::unique_ptr<Trk::TrackParameters> phiPars;
858 if (phiCompRot->associatedSurface() ==
pars->associatedSurface()) {
859 phiPars =
pars->uniqueClone();
867 ATH_MSG_WARNING(
" Failed to calculate TrackParameters for phi hits! ");
869 std::unique_ptr<Trk::TrackStateOnSurface> tsos =
871 newStates.push_back(std::move(tsos));
877 for (
const auto& outlier : outlierStates) {
878 if (hasPhi && outlier.first)
879 newStates.emplace_back(outlier.second->clone());
880 else if (hasEta && !outlier.first)
881 newStates.emplace_back(outlier.second->clone());
890 states.insert(
states.end(), std::make_move_iterator(newStates.begin()),
891 std::make_move_iterator(newStates.end()));
◆ interfaceID()
static const InterfaceID& Muon::MooTrackBuilder::interfaceID |
( |
| ) |
|
|
inlinestatic |
access to tool interface
Definition at line 99 of file MooTrackBuilder.h.
100 static const InterfaceID IID_MooTrackBuilder(
"Muon::MooTrackBuilder", 1, 0);
101 return IID_MooTrackBuilder;
◆ isSplitTrack()
identify whether two track are split
Definition at line 1093 of file MooTrackBuilder.cxx.
1096 if (!parsVec1 || parsVec1->
empty()) {
1102 ATH_MSG_WARNING(
" isSplitTrack::Track without NULL pointer in parameter vector! ");
1107 if (!parsVec2 || parsVec2->
empty()) {
1113 ATH_MSG_WARNING(
" isSplitTrack::Track without NULL pointer in parameter vector! ");
1122 double sinTheta1 =
sin(pars1->
momentum().theta());
1123 double sinTheta2 =
sin(pars2->
momentum().theta());
1124 double deltaSinTheta = sinTheta1 - sinTheta2;
1125 if (std::abs(deltaSinTheta) > 1.) {
1126 ATH_MSG_DEBUG(
" too large opening angle in theta " << deltaSinTheta);
1131 double deltaSinPhi = sinPhi1 - sinPhi2;
1132 if (std::abs(deltaSinPhi) > 1.) {
1133 ATH_MSG_DEBUG(
" too large opening angle in phi " << deltaSinPhi);
1145 if (isSL1 && !isSL2) {
1146 referenceTrack = &track2;
1147 otherTrack = &track1;
1148 }
else if (!isSL1 && isSL2) {
1149 referenceTrack = &track1;
1150 otherTrack = &track2;
1155 referenceTrack = &track1;
1156 otherTrack = &track2;
1158 referenceTrack = &track2;
1159 otherTrack = &track1;
1182 DistanceAlongParameters distAlongPars;
1184 unsigned int nmatching(0);
1185 unsigned int noff(0);
1188 double prevDist = 1e10;
1192 while (refTSOS != refTSOS_end && otherTSOS != otherTSOS_end) {
1205 double dist = distAlongPars(*parsRef, *parsOther);
1214 if (prevPars && std::abs(prevDist) < std::abs(dist)) {
1215 closestPars = prevPars;
1217 closestPars = parsRef;
1225 if (!
id.is_valid()) {
1240 std::optional<Trk::ResidualPull> resPull =
1242 if (resPull && resPull->pull().size() == 1) {
1244 residual = resPull->residual().front();
1245 pull = resPull->pull().front();
1250 bool inBounds =
false;
1261 const MdtDriftCircleOnTrack* mdt =
dynamic_cast<const MdtDriftCircleOnTrack*
>(meas);
1265 double halfTubeLen = 0.5 * mdt->detectorElement()->getActiveTubeLength(
layer,
tube);
1271 const MMClusterOnTrack* mmClusterOnTrack =
dynamic_cast<const MMClusterOnTrack*
>(meas);
1272 if (mmClusterOnTrack) {
1273 inBounds = mmClusterOnTrack->detectorElement()->insideActiveBounds(
id, LocVec2D, tol1, tol2);
1288 if (inBounds && (std::abs(
residual) < 20. || std::abs(
pull) < 10.)) {
1297 ATH_MSG_DEBUG(
"failed to extrapolate parameters to surface");
1309 return nmatching > noff;
◆ mergeSplitTracks()
look for split tracks in collection and merge them
Definition at line 1312 of file MooTrackBuilder.cxx.
1314 std::vector<std::pair<bool, std::unique_ptr<Trk::Track> > > goodTracks;
1315 goodTracks.reserve(tracks.
size());
1316 bool foundSplitTracks =
false;
1318 ATH_MSG_DEBUG(
" trying to merge split tracks, collection size " << tracks.
size());
1323 std::unique_ptr<Trk::Track> mergedTrack;
1326 for (std::pair<
bool, std::unique_ptr<Trk::Track>>& good_trk : goodTracks) {
1331 std::unique_ptr<Trk::Track> track1 = std::make_unique<Trk::Track>(*good_trk.second);
1332 std::unique_ptr<Trk::Track> track2 = std::make_unique<Trk::Track>(*in_track);
1335 mergedTrack =
combine(ctx, *can1, *can2, emptyPhiHits);
1341 <<
m_printer->print(*good_trk.second) << std::endl
1342 <<
m_printer->printStations(*good_trk.second) << std::endl
1343 <<
m_printer->print(*in_track) << std::endl
1344 <<
m_printer->printStations(*in_track) << std::endl
1345 <<
" merged track " << std::endl
1346 <<
m_printer->print(*mergedTrack) << std::endl
1347 <<
m_printer->printStations(*mergedTrack));
1348 foundSplitTracks =
true;
1350 good_trk.first =
true;
1351 good_trk.second.swap(mergedTrack);
1355 <<
m_printer->print(*good_trk.second) << std::endl
1356 <<
m_printer->printStations(*good_trk.second) << std::endl
1357 <<
m_printer->print(*in_track) << std::endl
1358 <<
m_printer->printStations(*in_track));
1365 std::unique_ptr<Trk::Track> newTrack = std::make_unique<Trk::Track>(*in_track);
1366 goodTracks.emplace_back(
false, std::move(newTrack));
1371 if (!foundSplitTracks)
return nullptr;
1374 newTracks->
reserve(goodTracks.size());
1375 for (std::pair<
bool, std::unique_ptr<Trk::Track>>& good_trk: goodTracks) {
1377 newTracks->
push_back(std::move(good_trk.second));
◆ 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.
◆ recalibrateHitsOnTrack()
std::unique_ptr< Trk::Track > Muon::MooTrackBuilder::recalibrateHitsOnTrack |
( |
const EventContext & |
ctx, |
|
|
const Trk::Track & |
track, |
|
|
bool |
doMdts, |
|
|
bool |
doCompetingClusters |
|
) |
| const |
|
overridevirtual |
recalibrate hits on track
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 616 of file MooTrackBuilder.cxx.
628 if (
track.measurementsOnTrack())
636 std::vector<std::unique_ptr<const Trk::TrackStateOnSurface>> newStates;
637 newStates.reserve(
states->size() + 5);
642 for (; state_itr != end_itr; ++state_itr) {
649 newStates.emplace_back(tsit->
clone());
656 newStates.emplace_back(tsit->
clone());
664 newStates.emplace_back(tsit->
clone());
672 const MdtDriftCircleOnTrack* mdt =
dynamic_cast<const MdtDriftCircleOnTrack*
>(meas);
674 ATH_MSG_WARNING(
" Measurement with MDT identifier that is not a MdtDriftCircleOnTrack ");
677 std::unique_ptr<Trk::RIO_OnTrack> newMdt(
m_mdtRotCreator->correct(*mdt->prepRawData(), *
pars, ctx));
683 *tsit, std::move(newMdt),
pars->uniqueClone(),
686 newStates.push_back(std::move(tsos));
689 newStates.emplace_back(tsit->
clone());
693 newStates.emplace_back(tsit->
clone());
696 if (doCompetingClusters) {
699 newStates.emplace_back(tsit->
clone());
703 newStates.emplace_back(tsit->
clone());
709 ATH_MSG_DEBUG(
" original track had " <<
states->size() <<
" TSOS, adding " << newStates.size() -
states->size() <<
" new TSOS ");
712 auto trackStateOnSurfaces = std::make_unique<Trk::TrackStates>();
713 trackStateOnSurfaces->reserve(newStates.size());
714 for (std::unique_ptr<const Trk::TrackStateOnSurface>& new_state : newStates) {
716 trackStateOnSurfaces->push_back(std::move(new_state));
718 return std::make_unique<Trk::Track>(
track.info(), std::move(trackStateOnSurfaces),
719 track.fitQuality() ?
track.fitQuality()->uniqueClone() :
nullptr);
◆ refine()
void Muon::MooTrackBuilder::refine |
( |
const EventContext & |
ctx, |
|
|
MuPatTrack & |
track |
|
) |
| const |
|
overridevirtual |
interface for tools which refine the hit content of a given track
- Parameters
-
- Returns
- new refined track. Pointer could be zero, ownership passed to caller
Implements Muon::IMuonTrackRefiner.
Definition at line 92 of file MooTrackBuilder.cxx.
96 <<
m_printer->print(
track.track().measurementsOnTrack()->stdcont()));
99 if (!finalTrack) {
ATH_MSG_WARNING(
" final track lost, this should not happen "); }
101 <<
m_printer->print(*finalTrack) << std::endl
102 <<
m_printer->print(finalTrack->measurementsOnTrack()->stdcont()));
108 bool recreateCompetingROTs =
true;
109 std::unique_ptr<Trk::Track> recalibratedTrack =
recalibrateHitsOnTrack(ctx, *finalTrack, recalibrateMDTHits, recreateCompetingROTs);
110 if (!recalibratedTrack) {
113 finalTrack.swap(recalibratedTrack);
115 std::unique_ptr<Trk::Track> refittedTrack =
refit(ctx, *finalTrack);
116 if (!refittedTrack) {
118 <<
m_printer->print(*finalTrack) << std::endl
119 <<
m_printer->printStations(*finalTrack));
121 finalTrack.swap(refittedTrack);
125 if (!finalTrackWithHoles) {
126 ATH_MSG_WARNING(
" failed to add holes to final track, this should not happen ");
128 finalTrack.swap(finalTrackWithHoles);
131 if (entryRecordTrack) {
132 finalTrack.swap(entryRecordTrack);
◆ refit()
refit track
- Parameters
-
- Returns
- a pointer to the resulting track, will return zero if combination failed. Ownership passed to user.
Implements Muon::IMuonSegmentTrackBuilder.
Definition at line 68 of file MooTrackBuilder.cxx.
83 fieldCondObj->getInitializedCache(fieldCache);
◆ removeDuplicateWithReference()
Definition at line 482 of file MooTrackBuilder.cxx.
484 if (referenceSegments.empty())
return;
486 ATH_MSG_DEBUG(
" Removing duplicates from segment vector of size " << segments->
size() <<
" reference size "
487 << referenceSegments.size());
489 CompareMuonSegmentKeys compareSegmentKeys{};
492 std::vector<std::pair<MuonSegmentKey, Trk::SegmentCollection::iterator> > segKeys;
493 segKeys.reserve(segments->
size());
498 for (; sit != sit_end; ++sit) {
501 segKeys.emplace_back(MuonSegmentKey(*mseg), sit);
505 std::vector<MuonSegmentKey> referenceSegKeys;
506 referenceSegKeys.reserve(referenceSegments.size());
511 for (; vit != vit_end; ++vit) { referenceSegKeys.emplace_back(**vit); }
514 std::vector<std::pair<MuonSegmentKey, Trk::SegmentCollection::iterator> >
::iterator skit = segKeys.begin();
515 std::vector<std::pair<MuonSegmentKey, Trk::SegmentCollection::iterator> >
::iterator skit_end = segKeys.end();
516 for (; skit != skit_end; ++skit) {
517 bool isDuplicate =
false;
522 for (; rskit != rskit_end; ++rskit) {
535 if (isDuplicate) segments->
erase(skit->second);
◆ renounce()
◆ renounceArray()
◆ splitTrack()
split given track if it crosses the calorimeter volume, code assumes that the track was already extrapolated to the muon entry record using the MuonTrackExtrapolationTool.
It uses the double perigee to spot the tracks to be split.
Definition at line 897 of file MooTrackBuilder.cxx.
911 fieldCondObj->getInitializedCache(fieldCache);
◆ sysInitialize()
◆ 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()
◆ m_candidateHandler
Initial value:{this, "CandidateTool",
"Muon::MuPatCandidateTool/MuPatCandidateTool"}
candidate handler
Definition at line 257 of file MooTrackBuilder.h.
◆ m_candidateMatchingTool
Initial value:{this, "CandidateMatchingTool",
"Muon::MooCandidateMatchingTool/MooCandidateMatchingTool"}
Definition at line 259 of file MooTrackBuilder.h.
◆ m_compRotCreator
Initial value:{
this, "CompetingClustersCreator", "Muon::TriggerChamberClusterOnTrackCreator/TriggerChamberClusterOnTrackCreator"}
Definition at line 272 of file MooTrackBuilder.h.
◆ m_detStore
◆ m_doTimeOutChecks
Gaudi::Property<bool> Muon::MooTrackBuilder::m_doTimeOutChecks {this, "UseTimeOutGuard", true} |
|
private |
◆ m_edmHelperSvc
Initial value:{this, "edmHelper", "Muon::MuonEDMHelperSvc/MuonEDMHelperSvc",
"Handle to the service providing the IMuonEDMHelperSvc interface"}
Definition at line 263 of file MooTrackBuilder.h.
◆ m_errorOptimisationTool
◆ m_evtStore
◆ m_fieldCacheCondObjInputKey
Initial value:{this, "AtlasFieldCacheCondObj", "fieldCondObj",
"Name of the Magnetic Field conditions object key"}
Definition at line 286 of file MooTrackBuilder.h.
◆ m_fitter
◆ m_idHelperSvc
◆ m_magFieldProperties
◆ m_mdtRotCreator
Initial value:{this, "MdtRotCreator",
"Muon::MdtDriftCircleOnTrackCreator/MdtDriftCircleOnTrackCreator"}
Definition at line 270 of file MooTrackBuilder.h.
◆ m_muonChamberHoleRecoverTool
Initial value:{
this, "ChamberHoleRecoveryTool",
"Muon::MuonChamberHoleRecoveryTool/MuonChamberHoleRecoveryTool"}
Definition at line 277 of file MooTrackBuilder.h.
◆ m_ncalls
std::atomic_uint Muon::MooTrackBuilder::m_ncalls {0} |
|
mutableprivate |
◆ m_nTimedOut
std::atomic_uint Muon::MooTrackBuilder::m_nTimedOut {0} |
|
mutableprivate |
◆ m_printer
Initial value:{this, "Printer",
"Muon::MuonEDMPrinterTool/MuonEDMPrinterTool"}
tool to print out EDM objects;
Definition at line 265 of file MooTrackBuilder.h.
◆ m_propagator
◆ m_pullCalculator
Initial value:{this, "PullCalculator",
"Trk::ResidualPullCalculator/ResidualPullCalculator"}
Definition at line 275 of file MooTrackBuilder.h.
◆ m_recalibrateMDTHits
Gaudi::Property<bool> Muon::MooTrackBuilder::m_recalibrateMDTHits {this, "RecalibrateMDTHitsOnTrack", true} |
|
private |
◆ m_seededSegmentFinder
Initial value:{this, "SeededSegmentFinder",
"Muon::MuonSeededSegmentFinder/MuonSeededSegmentFinder"}
Definition at line 268 of file MooTrackBuilder.h.
◆ m_slFitter
◆ m_trackExtrapolationTool
Initial value:{
this, "Extrapolator", "Muon::MuonTrackExtrapolationTool/MuonTrackExtrapolationTool"}
Definition at line 280 of file MooTrackBuilder.h.
◆ m_trackSummaryTool
◆ m_trackToSegmentTool
Initial value:{this, "TrackToSegmentTool",
"Muon::MuonTrackToSegmentTool/MuonTrackToSegmentTool"}
Definition at line 261 of file MooTrackBuilder.h.
◆ m_useExclusionList
Gaudi::Property<bool> Muon::MooTrackBuilder::m_useExclusionList |
|
private |
Initial value:{this, "UseExclusionList",
true}
use exclusion list (bit faster at the price of missing chambers)
Definition at line 291 of file MooTrackBuilder.h.
◆ m_useTrackingHistory
Gaudi::Property<bool> Muon::MooTrackBuilder::m_useTrackingHistory |
|
private |
Initial value:{this, "UseTrackingHistory",
true}
use history of the track finding up to now to avoid creating duplicates
Definition at line 293 of file MooTrackBuilder.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
JetConstituentVector::iterator iterator
bool isSplitTrack(const EventContext &ctx, const Trk::Track &track1, const Trk::Track &track2) const
identify whether two track are split
const TrackParameters * trackParameters() const
return ptr to trackparameters const overload
Const iterator class for DataVector/DataList.
ToolHandle< IMuonHoleRecoveryTool > m_muonChamberHoleRecoverTool
ToolHandle< IMuonTrackToSegmentTool > m_trackToSegmentTool
std::string find(const std::string &s)
return a remapped string
Gaudi::Property< bool > m_useTrackingHistory
use history of the track finding up to now to avoid creating duplicates
virtual TrackStateOnSurface * clone() const
Pseudo-constructor: needed to avoid excessive RTTI.
const Amg::Vector3D & position() const
Access method for the position.
Eigen::Matrix< double, 2, 1 > Vector2D
const float EO[NO]
Energy levels for Oxygen.
std::unique_ptr< ParametersBase< DIM, T > > uniqueClone() const
clone method for polymorphic deep copy returning unique_ptr; it is not overriden, but uses the existi...
const Trk::TrackStates * trackStateOnSurfaces() const
return a pointer to a const DataVector of const TrackStateOnSurfaces.
ServiceHandle< IMuonEDMHelperSvc > m_edmHelperSvc
virtual std::unique_ptr< Trk::Track > recalibrateHitsOnTrack(const EventContext &ctx, const Trk::Track &track, bool doMdts, bool doCompetingClusters) const override
recalibrate hits on track
static std::unique_ptr< Trk::TrackParameters > closestParameters(const Trk::Track &track, const Amg::Vector3D &pos, bool onlyUseMeasured=false)
const std::string & stName(StIndex index)
convert StIndex into a string
@ Unbiased
RP with track state that has measurement not included.
virtual std::unique_ptr< Trk::Track > refit(const EventContext &ctx, Trk::Track &track) const override
refit track
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
ToolHandle< MuPatCandidateTool > m_candidateHandler
candidate handler
const MeasurementBase * measurementOnTrack() const
returns MeasurementBase const overload
bool isSplit(int matchInfo)
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
ToolHandle< IMuonSeededSegmentFinder > m_seededSegmentFinder
MuonSegment_v1 MuonSegment
Reference the current persistent version:
ToolHandle< IMuonCompetingClustersOnTrackCreator > m_compRotCreator
void stable_sort(std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, std::reverse_iterator< DataModel_detail::iterator< DVL > > end, Compare comp)
Specialization of stable_sort for DataVector/List.
virtual void setOwner(IDataHandleHolder *o)=0
@ Outlier
This TSoS contains an outlier, that is, it contains a MeasurementBase/RIO_OnTrack which was not used ...
ToolHandle< MooCandidateMatchingTool > m_candidateMatchingTool
OverlapResult
enum for the overlap result
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
bool type(const TrackStateOnSurfaceType type) const
Use this method to find out if the TSoS is of a certain type: i.e.
ToolHandle< MooTrackFitter > m_fitter
std::atomic_uint m_nTimedOut
ToolHandle< IMuonTrackExtrapolationTool > m_trackExtrapolationTool
(Non-const) Iterator class for DataVector/DataList.
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
virtual std::unique_ptr< Trk::TrackParameters > getClosestParameters(const Trk::Track &track, const Trk::Surface &surf) const override
find closest TrackParameters to the surface.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ToolHandle< MooTrackFitter > m_slFitter
static std::unique_ptr< Trk::TrackStateOnSurface > createMeasTSOS(std::unique_ptr< Trk::MeasurementBase > meas, std::unique_ptr< Trk::TrackParameters > pars, Trk::TrackStateOnSurface::TrackStateOnSurfaceType type)
create a TSOS with a measurement, takes ownership of the pointers
PublicToolHandle< MuonEDMPrinterTool > m_printer
tool to print out EDM objects;
const T * front() const
Access the first element in the collection as an rvalue.
std::atomic_uint m_ncalls
ToolHandle< Trk::IExtendedTrackSummaryTool > m_trackSummaryTool
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
virtual std::unique_ptr< Trk::TrackParameters > findClosestParameters(const Trk::Track &track, const Amg::Vector3D &pos) const override
find closest TrackParameters to the position.
static Timeout & instance()
Get reference to Timeout singleton.
Gaudi::Property< bool > m_doTimeOutChecks
on/off time out check
std::unique_ptr< Trk::Track > combine(const EventContext &ctx, const MuPatCandidateBase &firstEntry, const MuPatCandidateBase &secondEntry, const PrepVec &patternPhiHits) const
combine two MCTBCandidateEntries
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
StIndex
enum to classify the different station layers in the muon spectrometer
Gaudi::Property< bool > m_recalibrateMDTHits
const DataVector< const TrackParameters > * trackParameters() const
Return a pointer to a vector of TrackParameters.
represents the track state (measurement, material, fit parameters and quality) at a surface.
virtual const Surface & associatedSurface() const =0
Interface method to get the associated Surface.
Gaudi::Property< bool > m_useExclusionList
use exclusion list (bit faster at the price of missing chambers)
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
virtual bool insideBounds(const Amg::Vector2D &locpos, double tol1=0., double tol2=0.) const =0
virtual methods to be overwritten by the inherited surfaces
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const Amg::Vector3D & momentum() const
Access method for the momentum.
ToolHandle< IMuonErrorOptimisationTool > m_errorOptimisationTool
virtual bool globalToLocal(const Amg::Vector3D &glob, const Amg::Vector3D &mom, Amg::Vector2D &loc) const =0
Specified by each surface type: GlobalToLocal method without dynamic memory allocation - boolean chec...
#define ATH_MSG_WARNING(x)
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Trk::MagneticFieldProperties m_magFieldProperties
magnetic field properties
static std::unique_ptr< Trk::TrackStateOnSurface > createMeasTSOSWithUpdate(const Trk::TrackStateOnSurface &tsos, std::unique_ptr< Trk::MeasurementBase > meas, std::unique_ptr< Trk::TrackParameters > pars, Trk::TrackStateOnSurface::TrackStateOnSurfaceType type)
create a TSOS with a measurement, takes ownership of the pointers
ToolHandle< Trk::IResidualPullCalculator > m_pullCalculator
std::vector< std::unique_ptr< Trk::Track > > combineWithSegmentFinding(const EventContext &ctx, const Trk::Track &track, const MuonSegment &seg, const PrepVec &patternPhiHits) const
find tracks by redoing the segment finding in the chamber of the segment
iterator erase(iterator position)
Remove element at a given position.
ToolHandle< IMdtDriftCircleOnTrackCreator > m_mdtRotCreator
ToolHandle< Trk::IPropagator > m_propagator
size_type size() const noexcept
Returns the number of elements in the collection.
Trk::TrackStates::const_iterator insertClustersWithCompetingRotCreation(const EventContext &ctx, Trk::TrackStates::const_iterator tsit, Trk::TrackStates::const_iterator tsit_end, std::vector< std::unique_ptr< const Trk::TrackStateOnSurface >> &states) const
void removeDuplicateWithReference(std::unique_ptr< Trk::SegmentCollection > &segments, std::vector< const MuonSegment * > &referenceSegments) const
void zero(TH2 *h)
zero the contents of a 2d histogram
bool empty() const noexcept
Returns true if the collection is empty.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Muon::NSW_PadTriggerSegment segment(const NSWL1::PadTrigger &data)