ATLAS Offline Software
|
#include <InDetTrackSplitterTool.h>
Public Member Functions | |
InDetTrackSplitterTool (std::string const &, std::string const &, IInterface const *) | |
default constructor More... | |
virtual | ~InDetTrackSplitterTool () |
default destructor More... | |
virtual StatusCode | initialize () |
standard Athena-Algorithm methods More... | |
virtual StatusCode | finalize () |
virtual void | splitTracks (TrackCollection const *inputTracks) const |
Takes a trackCollection, splits them according to upper and lower parts and fills two track collections, one with upper tracks and one with lower tracks which are accessed via getUpperTracks and getLowerTracks. More... | |
virtual std::pair< Trk::Track *, Trk::Track * > | splitInUpperLowerTrack (Trk::Track const &input, bool siliconHitsOnly=false) const |
Splits a single input track into upper and lower parts (based on global y) returns a pair of track the first being the upper. More... | |
virtual Trk::Track * | stripTrack (Trk::Track const &input, bool removeSilicon=true, bool applyConstraint=true) const |
Takes a combined ID track and either 1) if removeSilicon = true Strips off the Si hits. More... | |
virtual std::pair< Trk::Track *, Trk::Track * > | splitInOddEvenHitsTrack (Trk::Track const &input) const |
Splits a single input track into odd and even parts (with logic to aviod splitting SCT space points) More... | |
std::string const | UpperTracksKey () const |
Return the names of the track collections stored in storeGate. More... | |
std::string const | LowerTracksKey () const |
ServiceHandle< StoreGateSvc > & | evtStore () |
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More... | |
const ServiceHandle< StoreGateSvc > & | evtStore () const |
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More... | |
const ServiceHandle< StoreGateSvc > & | detStore () const |
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More... | |
virtual StatusCode | 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 > &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 |
Static Public Member Functions | |
static InterfaceID const & | interfaceID () |
Retrieve interface ID. More... | |
Protected Member Functions | |
void | renounceArray (SG::VarHandleKeyArray &handlesArray) |
remove all handles from I/O resolution More... | |
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. More... | |
Private Types | |
typedef ServiceHandle< StoreGateSvc > | StoreGateSvc_t |
Private Member Functions | |
bool | trackIsCandidate (Trk::Track const &inputTrack) const |
Track selection applied in the splitTracks method (for the moment this is just a d0 cut requiring the track went through TRT cavity. More... | |
std::vector< Trk::MeasurementBase const * > | getSCTHits (Trk::Track const &input) const |
Return a vector of the SCT hits on track. More... | |
std::vector< Trk::MeasurementBase const * >::iterator | findSCTHitsFromSameSpacePoint (Trk::MeasurementBase const *sctHit, std::vector< Trk::MeasurementBase const * > &listOfSCTHits) const |
Logic to check if there is another SCT hit associated with the input hit, which forms a space point. More... | |
bool | isConstrained (unsigned int nPixelHits, unsigned int nSCTHits, unsigned int nTRTHits, unsigned int nPseudomeasurements) const |
Logic to check if the track is constrained given the number of various types of hits. More... | |
Trk::Track * | stripSiFromTrack (Trk::Track const &input) const |
Strip the Si hits, fit the remaining with a theta, z0 constraint. More... | |
Trk::PseudoMeasurementOnTrack const * | makeThetaZ0Constraint (Trk::Perigee const *originialPerigee) const |
Make the theta and z0 constraint. More... | |
Trk::Track * | stripTRTFromTrack (Trk::Track const &input, bool applyConstraint=true) const |
Strip the TRT hits, fit the remaining with a qOverP constraint. More... | |
Trk::PseudoMeasurementOnTrack const * | makePConstraint (Trk::Perigee const *originialPerigee, Trk::StraightLineSurface const *trtSurf) const |
Make the qOverP constraint. More... | |
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
specialization for handling Gaudi::Property<SG::VarHandleKey> More... | |
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More... | |
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
specialization for handling Gaudi::Property<SG::VarHandleBase> More... | |
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More... | |
Private Attributes | |
SG::WriteHandleKey< TrackCollection > | m_outputUpperTracksName |
Output track collection names recorded in storgate. More... | |
SG::WriteHandleKey< TrackCollection > | m_outputLowerTracksName |
ToolHandle< Trk::ITrackFitter > | m_trkfitter |
Helper Functions. More... | |
TRT_ID const * | m_trtid {} |
SCT_ID const * | m_sctid {} |
bool | m_keepmaterial |
Do we use the material on the input track. More... | |
StoreGateSvc_t | m_evtStore |
Pointer to StoreGate (event store by default) More... | |
StoreGateSvc_t | m_detStore |
Pointer to StoreGate (detector store by default) More... | |
std::vector< SG::VarHandleKeyArray * > | m_vhka |
bool | m_varHandleArraysDeclared |
This tool is used for splitting tracks in different segments and returning fitted tracks that have the corrisponding hits associated with them.
Currently it is for seen to split tracks in:
Usages: 1) If you have a single track and want to split in to upper and lower do:
m_trackSplitterTool->splitInUpperLowerTrack(inputtrack); ->splitInOddEvenHitsTrack(inputtrack);
this call return a std::pair containing the split tracks
3) If you have a single track and want to strip ether Si or TRT hits do:
m_trackSplitterTool->stripTrack(inputtrack,true); //For removing the Si Hits m_trackSplitterTool->stripTrack(inputtrack,false);//For removing the TRT Hits
2) If you have a track collection and want to create track collections with upper and lower tracks do
m_trackSplitterTool->splitTracks(inputTracks);
then retrieve the collection from storeGate with the names m_outputUpperTracksName, m_outputLowerTracksName
Definition at line 81 of file InDetTrackSplitterTool.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
InDet::InDetTrackSplitterTool::InDetTrackSplitterTool | ( | std::string const & | type, |
std::string const & | name, | ||
IInterface const * | parent | ||
) |
|
virtualdefault |
default destructor
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
|
inlineprivateinherited |
specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>
Definition at line 199 of file AthCommonDataStore.h.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Definition at line 259 of file AthCommonDataStore.h.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Declare a new Gaudi property.
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.
|
inlineinherited |
Definition at line 145 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc/DetectorStore
Returns (kind of) a pointer to the StoreGateSvc
.
Definition at line 95 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc
(event store) Returns (kind of) a pointer to the StoreGateSvc
.
Definition at line 85 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc
(event store) Returns (kind of) a pointer to the StoreGateSvc
.
Definition at line 90 of file AthCommonDataStore.h.
|
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
|
virtual |
Definition at line 133 of file InDetTrackSplitterTool.cxx.
|
private |
Logic to check if there is another SCT hit associated with the input hit, which forms a space point.
Logic to check if there is another SCT hit associated with the input hit, which forms a space point (used for not breaking up SCT space points, when splitting Odd/Even)
Definition at line 908 of file InDetTrackSplitterTool.cxx.
|
private |
Return a vector of the SCT hits on track.
Return a vector of the SCT hits on track (used for not breaking up SCT space points, when splitting Odd/Even)
order the hits in y
Definition at line 877 of file InDetTrackSplitterTool.cxx.
|
virtual |
standard Athena-Algorithm methods
Get TRT helper
Get SCT helper
Fitter
Definition at line 98 of file InDetTrackSplitterTool.cxx.
|
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.
|
inlinestaticinherited |
Retrieve interface ID.
Definition at line 25 of file IInDetTrackSplitterTool.h.
|
private |
Logic to check if the track is constrained given the number of various types of hits.
Two cases to consider, tracks with Si hits (first case in the ||), and TRT Only tracks (second case)
Definition at line 940 of file InDetTrackSplitterTool.cxx.
|
inlinevirtual |
|
private |
Make the qOverP constraint.
Define the constraint parameter
Define the uncertainty on the constraint parameter
Create the constraint
Definition at line 533 of file InDetTrackSplitterTool.cxx.
|
private |
Make the theta and z0 constraint.
Define the constraint parameters
Define the uncertainty on the constraint parameters
Get the surface were the constraint will be applied (we got the constraints from the perigee, apply it there too)
Create the constriant
Debugging
Definition at line 555 of file InDetTrackSplitterTool.cxx.
|
inlineinherited |
Definition at line 24 of file AthCommonMsg.h.
|
inlineinherited |
Definition at line 27 of file AthCommonMsg.h.
|
inlineinherited |
Definition at line 30 of file AthCommonMsg.h.
|
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.
|
inlineprotectedinherited |
Definition at line 380 of file AthCommonDataStore.h.
|
inlineprotectedinherited |
remove all handles from I/O resolution
Definition at line 364 of file AthCommonDataStore.h.
|
virtual |
Splits a single input track into odd and even parts (with logic to aviod splitting SCT space points)
Splits a single input track into upper and lower parts (based on global y) returns a pair of track the first being the upper.
The returned tracks
Get the initial perigee parameters
Get the track particle hypothisis
Get the measurements
Get SCT hits (ordered)
The odd hits
protect against breaking up space points find the sct hit in unusedSCTHits
if the SCT hits hasn't been assigned to a tracks
remove hit from unused list
find any other hits with same r phi
The even hits
protect against breaking up space points find the sct hit in unusedSCTHits
if the SCT hits hasn't been assigned to a tracks
remove hit from umused list
find any other hits with same r phi
Sort the hits.
Upper track
track must be overconstrained
lower track
Implements InDet::IInDetTrackSplitterTool.
Definition at line 595 of file InDetTrackSplitterTool.cxx.
|
virtual |
Splits a single input track into upper and lower parts (based on global y) returns a pair of track the first being the upper.
Get the initial perigee parameters
Get the track particle hypothisis
Get the measurements
Upper track
lower track
Implements InDet::IInDetTrackSplitterTool.
Definition at line 142 of file InDetTrackSplitterTool.cxx.
|
virtual |
Takes a trackCollection, splits them according to upper and lower parts and fills two track collections, one with upper tracks and one with lower tracks which are accessed via getUpperTracks and getLowerTracks.
Using this method requires track to pass trackIsCandidate (for the moment this is just a d0 cut requiring the track went through TRT cavity
if went though TRT cavity
Implements InDet::IInDetTrackSplitterTool.
Definition at line 794 of file InDetTrackSplitterTool.cxx.
|
private |
Strip the Si hits, fit the remaining with a theta, z0 constraint.
The returned track
The measurements
Get the initial perigee parameters
Get the track particle hypothisis
Create the psuesdoMeasurement with the constraints
Adding the constraint first
Fit track
Definition at line 384 of file InDetTrackSplitterTool.cxx.
|
virtual |
Takes a combined ID track and either 1) if removeSilicon = true Strips off the Si hits.
Strips either the Si or the TRT and refits the track using constrants.
Then refits the remaining TRT hits using the original z0 and eta0 as constratins on the fit. 2) if removeSilicon = false Strips off the TRT hits. Then refits the remaining Si hits using the original pT and phi as constratins on the fit
The returned track
The strip the Si
The strip the TRT
Implements InDet::IInDetTrackSplitterTool.
Definition at line 362 of file InDetTrackSplitterTool.cxx.
|
private |
Strip the TRT hits, fit the remaining with a qOverP constraint.
The returned track
The measurements
Get the initial perigee parameters
Get the track particle hypothisis
Only add the constraint once
Get the position in space were the constraint will be added We'll chose the first TRT hit. (I dont think this matters, but a surface needs to be specified)
Create the psuesdoMeasurement with the constraints
Adding the constraint first
Only add the constraint once
Fit track
Definition at line 451 of file InDetTrackSplitterTool.cxx.
|
overridevirtualinherited |
Perform system initialization for an algorithm.
We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.
Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.
|
overridevirtualinherited |
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
|
private |
Track selection applied in the splitTracks method (for the moment this is just a d0 cut requiring the track went through TRT cavity.
This can be fleshed out, to have better track selection
Definition at line 847 of file InDetTrackSplitterTool.cxx.
|
inlineinherited |
Definition at line 308 of file AthCommonDataStore.h.
|
inlinevirtual |
Return the names of the track collections stored in storeGate.
Implements InDet::IInDetTrackSplitterTool.
Definition at line 125 of file InDetTrackSplitterTool.h.
|
privateinherited |
Pointer to StoreGate (detector store by default)
Definition at line 393 of file AthCommonDataStore.h.
|
privateinherited |
Pointer to StoreGate (event store by default)
Definition at line 390 of file AthCommonDataStore.h.
|
private |
Do we use the material on the input track.
Definition at line 176 of file InDetTrackSplitterTool.h.
|
private |
Definition at line 167 of file InDetTrackSplitterTool.h.
|
private |
Output track collection names recorded in storgate.
Definition at line 166 of file InDetTrackSplitterTool.h.
Definition at line 172 of file InDetTrackSplitterTool.h.
|
private |
Helper Functions.
Definition at line 170 of file InDetTrackSplitterTool.h.
Definition at line 171 of file InDetTrackSplitterTool.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.