ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::TRT_SeededTrackFinder_ATL Class Reference

InDet::TRT_SeededTrackFinderATL is an algorithm which produces tracks along the road of InDetDD::SiDetectorElement* sorted in propagation order. More...

#include <TRT_SeededTrackFinder_ATL.h>

Inheritance diagram for InDet::TRT_SeededTrackFinder_ATL:
Collaboration diagram for InDet::TRT_SeededTrackFinder_ATL:

Classes

class  EventData

Public Member Functions

 TRT_SeededTrackFinder_ATL (const std::string &, const std::string &, const IInterface *)
 Standard tool methods.
virtual ~TRT_SeededTrackFinder_ATL ()
virtual StatusCode initialize () override
virtual StatusCode finalize () override
virtual std::list< Trk::Track * > getTrack (const EventContext &ctx, InDet::ITRT_SeededTrackFinder::IEventData &event_data, const Trk::TrackSegment &) const override
 Main methods for local track finding.
virtual std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventDatanewEvent (const EventContext &ctx, SiCombinatorialTrackFinderData_xk &combinatorialData) const override
 New event initialization.
virtual std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventDatanewRegion (const EventContext &ctx, SiCombinatorialTrackFinderData_xk &combinatorialData, const std::vector< IdentifierHash > &, const std::vector< IdentifierHash > &) const override
 New region intialization.
virtual void endEvent (InDet::ITRT_SeededTrackFinder::IEventData &event_data) const override
 End of event tasks.
MsgStream & dump (MsgStream &out) const override
 Print internal tool parameters and status.
std::ostream & dump (std::ostream &out) const override
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 sysInitialize () override
 Perform system initialization for an algorithm.
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

Static Public Member Functions

static const InterfaceID & interfaceID ()

Protected Member Functions

void magneticFieldInit ()
 Private Methods.
std::unique_ptr< const Trk::TrackParametersgetTP (MagField::AtlasFieldCache &fieldCache, const Trk::SpacePoint *, const Trk::TrackParameters &, bool &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data) const
 Update track parameters through space point propagation.
std::list< Trk::Track * > findTrack (const EventContext &ctx, MagField::AtlasFieldCache &fieldCache, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data, const Trk::TrackParameters &, const Trk::TrackSegment &) const
 Find the corresponding list of Si tracks.
std::unique_ptr< const Trk::TrackParametersaddNoise (const SiNoise_bt &, const Trk::TrackParameters &, int) const
 Add material effects.
bool checkSeed (std::vector< const Trk::SpacePoint * > &, const Trk::TrackSegment &, const Trk::TrackParameters &) const
 Check consistency of seed and TRT track segment.
void setTrackQualityCuts ()
 Set the track quality cuts for combinatorial track finding.
std::list< Trk::Track * > cleanTrack (std::list< Trk::Track * >) const
 Eliminate spurious Pixel clusters in track.
bool isCaloCompatible (const Trk::TrackParameters &, const InDet::TRT_SeededTrackFinder_ATL::EventData &event_data) const
 Only propagate to the Si if the TRT segment is compatible with a calo measurement.
MsgStream & dumpconditions (MsgStream &out) const
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.

Static Protected Member Functions

static std::unique_ptr< const Trk::TrackParametersmodifyTrackParameters (const Trk::TrackParameters &, int)
 Modify track parameters if brem correction.
static void clusterTrackMap (Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
 Map PRDs-tracks.
static bool newClusters (const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
 Seed used by another track?
static bool newSeed (const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
 Seed SPs used by other high quality tracks?
static bool isNewTrack (Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
 Clean-up duplicate tracks.

Protected Attributes

StringProperty m_fieldmode
 Protected Data.
Trk::MagneticFieldProperties m_fieldprop
ToolHandle< InDet::ISiDetElementsRoadMakerm_roadmaker {this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"}
 Magnetic field properties.
ToolHandle< InDet::ITRT_SeededSpacePointFinderm_seedmaker {this, "SeedTool", ""}
ToolHandle< Trk::IPropagatorm_proptool {this, "PropagatorTool", "Trk::RungeKuttaPropagator/InDetPropagator"}
ToolHandle< Trk::IUpdatorm_updatorTool {this, "UpdatorTool", "Trk::KalmanUpdator_xk/InDetPatternUpdator"}
ToolHandle< InDet::ISiCombinatorialTrackFinderm_tracksfinder {this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"}
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCondObjInputKey
const TRT_IDm_trtId = nullptr
 ID TRT helper.
DoubleProperty m_xi2max {this, "Xi2max", 15., "max Xi2 for updators"}
 Track quality cuts to be passed to the combinatorial track finder.
DoubleProperty m_xi2maxNoAdd
DoubleProperty m_xi2maxlink
DoubleProperty m_pTmin {this, "pTmin", 500., "min pT"}
IntegerProperty m_nholesmax {this, "nHolesMax", 1, "Max number holes"}
IntegerProperty m_dholesmax
IntegerProperty m_nclusmin {this, "nClustersMin", 4, "Min number clusters"}
IntegerProperty m_nwclusmin
BooleanProperty m_bremCorrect
BooleanProperty m_propR
BooleanProperty m_useassoTool
InDet::TrackQualityCuts m_trackquality
DoubleArrayProperty m_errorScale
DoubleProperty m_outlierCut
BooleanProperty m_searchInCaloROI
SG::ReadHandleKey< ROIPhiRZContainerm_caloClusterROIKey {this, "EMROIPhiRZContainer", ""}
DoubleProperty m_phiWidth {this, "phiWidth", 0.3}

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

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

Private Attributes

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

InDet::TRT_SeededTrackFinderATL is an algorithm which produces tracks along the road of InDetDD::SiDetectorElement* sorted in propagation order.

Author
Thoma.nosp@m.s.Ko.nosp@m.ffas@.nosp@m.cern.nosp@m..ch

Definition at line 81 of file TRT_SeededTrackFinder_ATL.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ TRT_SeededTrackFinder_ATL()

InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL ( const std::string & t,
const std::string & n,
const IInterface * p )

Standard tool methods.

Definition at line 76 of file TRT_SeededTrackFinder_ATL.cxx.

78 : AthAlgTool(t,n,p)
79{
80 declareInterface<ITRT_SeededTrackFinder>(this);
81}
AthAlgTool()
Default constructor:

◆ ~TRT_SeededTrackFinder_ATL()

InDet::TRT_SeededTrackFinder_ATL::~TRT_SeededTrackFinder_ATL ( )
virtualdefault

Member Function Documentation

◆ addNoise()

std::unique_ptr< const Trk::TrackParameters > InDet::TRT_SeededTrackFinder_ATL::addNoise ( const SiNoise_bt & noise,
const Trk::TrackParameters & P1,
int isSmooth ) const
protected

Add material effects.

Definition at line 661 of file TRT_SeededTrackFinder_ATL.cxx.

661 {
662 ATH_MSG_DEBUG( "Adding noise to track parameters... " );
663 const double covAzim=noise.covarianceAzim();
664 const double covPola=noise.covariancePola();
665 const double covIMom=noise.covarianceIMom();
666 const double corIMom=noise.correctionIMom();
667 //Get the noise augmented parameters and the 15 lower half covariance matrix elements from the first input track parameters
668 const AmgVector(5)& Vp1 = P1.parameters();
669 double M[5]={Vp1[0],Vp1[1],Vp1[2],Vp1[3],Vp1[4]};
670 if(!isSmooth){
671 M[4] *= corIMom;
672 }else{
673 M[4] /= corIMom;
674 }
675 const AmgSymMatrix(5)* C = P1.covariance();
676 if(C){
677 AmgSymMatrix(5) nC;
678 nC = (*C);
679 nC(2,2)+=covAzim;
680 nC(3,3)+=covPola;
681 nC(4,4)+=covIMom;
682 return P1.associatedSurface().createUniqueTrackParameters(M[0],M[1],M[2],M[3],M[4],nC);
683 }
684 return nullptr;
685}
#define ATH_MSG_DEBUG(x)
#define AmgSymMatrix(dim)
#define AmgVector(rows)
struct color C

◆ checkSeed()

bool InDet::TRT_SeededTrackFinder_ATL::checkSeed ( std::vector< const Trk::SpacePoint * > & vsp,
const Trk::TrackSegment & tS,
const Trk::TrackParameters & tP ) const
protected

Check consistency of seed and TRT track segment.

Get TRT segment track parameters

Process only if endcap-transition region

Find the global z position of first endcap hit on TRT segment

Propagate at the z position of 1st endcap hit on TRT segment

Definition at line 694 of file TRT_SeededTrackFinder_ATL.cxx.

695 {
696 bool isGood = true;
697 int nEC = 0; double gz = 0.;
699 const AmgVector(5)& pTS=tP.parameters();
701 if(std::abs(std::log(std::tan(pTS[3]/2.)))>0.8){
703 for(int it=0; it<int(tS.numberOfMeasurementBases()); it++){
704 //Check if it is a pseudo measurement and move on
705 if ( dynamic_cast<const Trk::PseudoMeasurementOnTrack*>(tS.measurement(it)) ) continue;
706 const InDet::TRT_DriftCircleOnTrack* trtcircle = dynamic_cast<const InDet::TRT_DriftCircleOnTrack*>(tS.measurement(it));
707 if(trtcircle){
708 Identifier id=trtcircle->detectorElement()->identify();
709 int isB = m_trtId->barrel_ec(id);
710 if(isB==2 || isB==-2) nEC++;
711 if(nEC==1){
712 gz = trtcircle->globalPosition().z();
713 break;
714 }
715 }
716 }
717 double tanTheta = std::tan(thetaFromSpacePoints(vsp[0], vsp[1]));
719 double propR = getRadius(vsp[1]) + (gz-getZ(vsp[1]))*tanTheta;
720 if(propR<620. || propR>1010.) isGood=false;
721 double zIn = gz-propR/tanTheta;
722 if(zIn>300.) isGood = false;
723 }
724 return isGood;
725}
virtual Identifier identify() const override final
identifier of this detector element:
virtual const InDetDD::TRT_BaseElement * detectorElement() const override final
returns the detector element, assoicated with the PRD of this class
virtual const Amg::Vector3D & globalPosition() const override final
return the global position of this RIO_OnTrack
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)

◆ cleanTrack()

std::list< Trk::Track * > InDet::TRT_SeededTrackFinder_ATL::cleanTrack ( std::list< Trk::Track * > lTrk) const
protected

Eliminate spurious Pixel clusters in track.

Concentrate on the Si component of the track

Throw out any spurious pixel hits.Need to rebuild the vector of track states on surface from scratch, since it's const in EDM

Construct the new track

Definition at line 984 of file TRT_SeededTrackFinder_ATL.cxx.

984 {
985 std::list<Trk::Track*> cleanSiTrack; // List of clean Si tracks per TRT segment
986 std::list<Trk::Track*>::const_iterator it = lTrk.begin();
987 std::list<Trk::Track*>::const_iterator itEnd = lTrk.end();
988 for (; it != itEnd ; ++it){
989 int nPixHits = 0; //Number of Pixel PRDs
990 int nSctHits = 0; //Number of SCT PRDs
991 double pixR = 0.; //Radial position of last pixel PRD
992 double sctR = 0.; //Radial position of first SCT PRD
993
994 const Trk::TrackStates* newtsos = (*it)->trackStateOnSurfaces();
995 if(!newtsos) continue;
997 for(itp=newtsos->begin(); itp!=itpe; ++itp){
999 const InDet::SiClusterOnTrack* clus = dynamic_cast<const InDet::SiClusterOnTrack*>((*itp)->measurementOnTrack());
1000 if(clus && ((*itp)->type(Trk::TrackStateOnSurface::Measurement))){ //Count the number of hits used in the track
1001 const InDet::SiCluster* RawDataClus=dynamic_cast<const InDet::SiCluster*>(clus->prepRawData());
1002 if(RawDataClus==nullptr){
1003 ATH_MSG_DEBUG( "Si Cluster without PrepRawData!!!" );
1004 continue;
1005 }
1006 if(RawDataClus->detectorElement()->isPixel()){
1007 nPixHits++;
1008 pixR = RawDataClus->globalPosition().perp();
1009 }
1010 if((RawDataClus->detectorElement()->isSCT()) && (nSctHits==0)) {
1011 sctR = RawDataClus->globalPosition().perp();
1012 nSctHits++;
1013 break;
1014 }
1015 }
1016 }
1017
1019 if(nPixHits==1 && (sctR-pixR)>200.){
1020 auto cltsos = std::make_unique<Trk::TrackStates>();
1021 auto fq = (*it)->fitQuality()->uniqueClone();
1022 // copy track Si states into track
1024 for(p_tsos=newtsos->begin()+nPixHits;p_tsos!=newtsos->end();++p_tsos){
1025 cltsos->push_back( (*p_tsos)->clone() );
1026 }
1028 Trk::TrackInfo info;
1029 // info.setPatternRecognitionInfo(Trk::TrackInfo::TRTSeededTrackFinder);
1030 Trk::Track* nTrack = new Trk::Track(info, std::move(cltsos), std::move(fq));
1031 cleanSiTrack.push_back(nTrack);
1032 delete (*it);
1033 }else{
1034 cleanSiTrack.push_back((*it));
1035 }
1036 }
1037
1038 return cleanSiTrack;
1039}
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 Amg::Vector3D & globalPosition() const
return global position reference
virtual const InDetDD::SiDetectorElement * detectorElement() const override final
return the detector element corresponding to this PRD The pointer will be zero if the det el is not d...
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
DataVector< const Trk::TrackStateOnSurface > TrackStates

◆ clusterTrackMap()

void InDet::TRT_SeededTrackFinder_ATL::clusterTrackMap ( Trk::Track * Tr,
InDet::TRT_SeededTrackFinder_ATL::EventData & event_data )
staticprotected

Map PRDs-tracks.

Definition at line 783 of file TRT_SeededTrackFinder_ATL.cxx.

785{
787 m = Tr->measurementsOnTrack()->begin(),
788 me = Tr->measurementsOnTrack()->end ();
789
790 for(; m!=me; ++m) {
791 const Trk::PrepRawData* prd = ((const Trk::RIO_OnTrack*)(*m))->prepRawData();
792 if(prd) event_data.clusterTrack().insert(std::make_pair(prd,Tr));
793 }
794}
std::multimap< const Trk::PrepRawData *, const Trk::Track * > & clusterTrack()
const DataVector< const MeasurementBase > * measurementsOnTrack() const
return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ dump() [1/2]

MsgStream & InDet::TRT_SeededTrackFinder_ATL::dump ( MsgStream & out) const
overridevirtual

Print internal tool parameters and status.

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 141 of file TRT_SeededTrackFinder_ATL.cxx.

141 {
142 out<<"\n";
143 return dumpconditions(out);
144}
MsgStream & dumpconditions(MsgStream &out) const

◆ dump() [2/2]

std::ostream & InDet::TRT_SeededTrackFinder_ATL::dump ( std::ostream & out) const
overridevirtual

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 201 of file TRT_SeededTrackFinder_ATL.cxx.

201 {
202 return out;
203}

◆ dumpconditions()

MsgStream & InDet::TRT_SeededTrackFinder_ATL::dumpconditions ( MsgStream & out) const
protected

Definition at line 151 of file TRT_SeededTrackFinder_ATL.cxx.

151 {
152 auto paddedName=[](const auto & str)->std::string{
153 const auto n = 62-std::size(str);
154 std::string result(n,' '); //padding
155 result+='|';
156 result+='\n';
157 return std::string(str)+result;
158 };
159
160 auto format = [](MsgStream& m)->MsgStream&{
161 m<<std::setw(12)<<std::setprecision(5);
162 return m;
163 };
164
165 constexpr std::string_view fieldmode[9] ={"NoField" ,"ConstantField","SolenoidalField",
166 "ToroidalField" ,"Grid3DField" ,"RealisticField" ,
167 "UndefinedField","AthenaField" , "?????" };
168
169 int mode = m_fieldprop.magneticFieldMode();
170 if(mode<0 || mode>8 ) mode = 8;
171
172 constexpr auto horizontalRule{
173 "|-----------------------------------------------------------------------------------------|\n"
174 };
175
176 constexpr auto padding{" |\n"};
177 out<<horizontalRule;
178 out<<"| Tool for propagation | "<<paddedName(m_proptool.type());
179 out<<"| Tool for updator | "<<paddedName(m_updatorTool.type());
180 out<<"| Tool for road maker | "<<paddedName(m_roadmaker.type());
181 out<<"| Tool for seed maker | "<<paddedName(m_seedmaker.type());
182 out<<"| Tool for track finding | "<<paddedName(m_tracksfinder.type());
183 out<<"| Magnetic field mode | "<<paddedName(fieldmode[mode]);
184 out<<"| Min pT of track (MeV) | "<<format<<m_pTmin<<padding;
185 out<<"| Max Xi2 for cluster | "<<format<<m_xi2max<<padding;
186 out<<"| Max Xi2 for outlayer | "<<format<<m_xi2maxNoAdd<<padding;
187 out<<"| Max Xi2 for link | "<<format<<m_xi2maxlink<<padding;
188 out<<"| Min number of clusters | "<<std::setw(12)<<m_nclusmin<<padding;
189 out<<"| Max number holes | "<<std::setw(12)<<m_nholesmax<<padding;
190 out<<"| Max holes gap | "<<std::setw(12)<<m_dholesmax<<padding;
191 out<<horizontalRule;
192 return out;
193}
ToolHandle< InDet::ITRT_SeededSpacePointFinder > m_seedmaker
ToolHandle< Trk::IUpdator > m_updatorTool
ToolHandle< Trk::IPropagator > m_proptool
ToolHandle< InDet::ISiDetElementsRoadMaker > m_roadmaker
Magnetic field properties.
ToolHandle< InDet::ISiCombinatorialTrackFinder > m_tracksfinder
Trk::MagneticFieldProperties m_fieldprop
DoubleProperty m_xi2max
Track quality cuts to be passed to the combinatorial track finder.

◆ endEvent()

void InDet::TRT_SeededTrackFinder_ATL::endEvent ( InDet::ITRT_SeededTrackFinder::IEventData & event_data) const
overridevirtual

End of event tasks.

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 262 of file TRT_SeededTrackFinder_ATL.cxx.

262 {
263 //event_data cannot be const if passed to m_tracksfinder->endEvent
264 InDet::TRT_SeededTrackFinder_ATL::EventData &event_data = EventData::getPrivateEventData(virt_event_data);
265 // End event for track finder tool
266 m_tracksfinder->endEvent(event_data.combinatorialData());
267
268}
virtual InDet::SiCombinatorialTrackFinderData_xk & combinatorialData() override
static EventData & getPrivateEventData(InDet::ITRT_SeededTrackFinder::IEventData &virt_event_data)

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::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

◆ finalize()

StatusCode InDet::TRT_SeededTrackFinder_ATL::finalize ( )
overridevirtual

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 132 of file TRT_SeededTrackFinder_ATL.cxx.

132 {
133 return StatusCode::SUCCESS;
134}

◆ findTrack()

std::list< Trk::Track * > InDet::TRT_SeededTrackFinder_ATL::findTrack ( const EventContext & ctx,
MagField::AtlasFieldCache & fieldCache,
InDet::TRT_SeededTrackFinder_ATL::EventData & event_data,
const Trk::TrackParameters & initTP,
const Trk::TrackSegment & tS ) const
protected

Find the corresponding list of Si tracks.

List of space points in the current seed, starting from the one at the smaller radius

end of loop over seeds for this TRT segment

Definition at line 355 of file TRT_SeededTrackFinder_ATL.cxx.

357 {
358 SiCombinatorialTrackFinderData_xk& combinatorialData=event_data.combinatorialData();
359 //Return list copied by value (fix!!)
360 std::list<Trk::Track*> associatedSiTrack; // List of found tracks per TRT segment
361 constexpr double pi2 = 2.*M_PI;
362 constexpr double pi=M_PI;
363
364 //Get the seeds
365 std::list<std::pair<const Trk::SpacePoint*,const Trk::SpacePoint*> >
366 SpE = m_seedmaker->find2Sp(ctx, initTP,event_data.spacePointFinderEventData()); //Get a list of SP pairs
367
368 ATH_MSG_DEBUG("---------------> SP SEED LIST SIZE " << SpE.size() );
369 if(SpE.empty()){return associatedSiTrack;}
370
371 //
372 // --------------- loop over the found seeds
373 //
374
375 //Get the track states on surface that correspond to each SP pair that came from the seeding
376 std::vector<const Trk::SpacePoint*> SpVec{nullptr, nullptr};
377
378 std::list<std::pair<const Trk::SpacePoint*,const Trk::SpacePoint*> >::iterator r,re=SpE.end();
379 for(r=SpE.begin();r!=re; ++r){
380 std::list<Trk::Track*> aTracks ; // List of tracks found per seed
381 std::list<Trk::Track*> cTracks ; // List of cleaned tracks found per seed
382 event_data.noise().reset(); //Initiate the noise production tool at the beginning of each seed
383
384 //
385 // --------------- filter SP to improve prediction, scale errors
386 //
387
388 //Get the track parameters to use to get the detector elements for each SP pair
389 std::pair<const Trk::SpacePoint*, const Trk::SpacePoint*>& pSP = *r;
390 if (pSP.first != pSP.second){
391 ATH_MSG_DEBUG( "----> Seed Pair: SP 1 " << (pSP.first)->r() << " SP 2 " << (pSP.second)->r() );
392 } else {
393 if(msgLvl(MSG::DEBUG)) {
394 msg(MSG::DEBUG) << "----> Seed Single: SP 1 " << (pSP.first)->r() << "\n";
395 msg(MSG::DEBUG) << " Will not process for the time being ! A special module is needed\n" ;
396 msg(MSG::DEBUG) << " to deal with late conversion (no search and stablized input fit ).\n";
397 msg(MSG::DEBUG) << " Current version is unstable in the SP updates and gets unpredictable results." << endmsg;
398 }
399 continue;
400 }
401
403 SpVec[0]=(pSP.second);
404 SpVec[1]=(pSP.first);
405 if(!newClusters(SpVec,event_data)) {
406 ATH_MSG_DEBUG( "Seed SPs already used by a single track. Ignore..." );
407 continue;
408 }
409 if(!newSeed(SpVec,event_data)) {
410 ATH_MSG_DEBUG( "Seed SPs already used by other tracks. Ignore..." );
411 continue;
412 }
413
414 //
415 // ----------------Check the SP seed if field is ON
416 //
417 if(fieldCache.solenoidOn()){
418 bool seedGood = checkSeed(SpVec,tS,initTP);
419 if(!seedGood && m_propR) {
420 ATH_MSG_DEBUG( "Seed not consistent with TRT segment. Ignore..." );
421 continue;
422 }
423 }
424
425 //
426 // ----------------Get new better track parameters using the SP seed
427 //
428 ATH_MSG_DEBUG( "Get better track parameters using the seed" );
429 double newTheta = thetaFromSpacePoints(SpVec[0], SpVec[1]);
430 const AmgVector(5)& iv = initTP.parameters();
431 double newPhi = iv[2];
432 //Protect for theta and phi being out of range
433 if (newTheta > pi) newTheta = fmod(newTheta+pi,pi2)-pi;
434 else if(newTheta <-pi) newTheta = fmod(newTheta-pi,pi2)+pi;
435 if(newTheta<0.){ newTheta = -newTheta; newPhi+=pi; }
436 if (newPhi > pi) newPhi = fmod(newPhi+pi,pi2)-pi;
437 else if(newPhi <-pi) newPhi = fmod(newPhi-pi,pi2)+pi;
438 if(newTheta<0.27) {
439 ATH_MSG_DEBUG("Pseudorapidity greater than 2.Ignore" );
440 continue;
441 }
442
443 const AmgSymMatrix(5) * vCM = initTP.covariance();
444 AmgSymMatrix(5) nvCM;
445 nvCM<<
446 m_errorScale[0]*m_errorScale[0]*(*vCM)(0,0),0.,0.,0.,0.,
447 0.,m_errorScale[1]*m_errorScale[1]*(*vCM)(1,1),0.,0.,0.,
448 0.,0.,m_errorScale[2]*m_errorScale[2]*(*vCM)(2,2),0.,0.,
449 0.,0.,0.,m_errorScale[3]*m_errorScale[3]*(*vCM)(3,3),0.,
450 //cppcheck-suppress constStatement
451 0.,0.,0.,0.,m_errorScale[4]*m_errorScale[4]*(*vCM)(4,4);
452
453
454 //New intial track parameters saved as MeasuredAtaStraightLine
455 std::unique_ptr<const Trk::TrackParameters> niTP =
456 initTP.associatedSurface().createUniqueTrackParameters(
457 iv[0], iv[1], newPhi, newTheta, iv[4], nvCM);
458
459 if (niTP) {
460 ATH_MSG_DEBUG("Initial Track Parameters created and scaled from TRT segment, ");
461 ATH_MSG_VERBOSE(*niTP);
462 } else {
463 ATH_MSG_DEBUG("Could not get initial TRT track parameters! " );
464 continue;
465 }
466
467 //
468 // ----------------Propagate through the SP seed
469 //
470 ATH_MSG_DEBUG( "Propagating through the seed" );
471 bool outl = false;
472
473 //update with first SP
474 ATH_MSG_DEBUG( "Update with 1st SP from seed" );
475 std::unique_ptr<const Trk::TrackParameters> upTP = getTP(fieldCache, pSP.first,*niTP,outl,event_data);
476 //If no track parameters are found, go to the next seed
477 if(!upTP){
478 ATH_MSG_DEBUG( "Extrapolation through seed failed!Seed bogus.Move to next seed" );
479 continue;
480 }
481 //Not good if SP pair has outliers. Clean up the memory and move to next seed
482 if(outl){
483 ATH_MSG_DEBUG("Seed with outliers. Will not process!");
484 continue;
485 }
486
487 //update with second SP ?
488 if (pSP.first != pSP.second) {
489 //update with second SP
490 ATH_MSG_DEBUG( "Update with 2nd SP from seed" );
491 std::unique_ptr<const Trk::TrackParameters> newTP = getTP(fieldCache, pSP.second,*upTP,outl,event_data);
492 //If no track parameters are found, go to the next seed
493 if(!newTP){
494 ATH_MSG_DEBUG( "Extrapolation through seed failed!Seed bogus.Move to next seed" );
495 continue;
496 }
497 //Not good if SP pair has outliers. Clean up the memory and move to next seed
498 if(outl){
499 ATH_MSG_DEBUG("Seed with outliers.Will not process!");
500 continue;
501 }
502 // copy the newTP to upTP
503 upTP = std::move(newTP);
504 }
505
506 //Protect the road maker tool when the momentum is too low since the particle will spiral inside the tracker
507 if(upTP->momentum().perp()<m_pTmin){
508 ATH_MSG_DEBUG("Low pT.Stop! ");
509 continue;
510 }
511
512 //
513 // --------------- get Si detector element road
514 //
515 const Trk::PerigeeSurface persurf (Amg::Vector3D(0,0,0));
516
517 //Get track parameters at the end of SCT to start backwards propagation
518 auto per = m_proptool->propagate(ctx,*upTP,persurf,Trk::oppositeMomentum,false,
519 m_fieldprop,Trk::nonInteracting); //Propagate
520 if(!per){
521 ATH_MSG_DEBUG("No extrapolated track parameters!");
522 continue;
523 }
524
525 if(msgLvl(MSG::VERBOSE)) {
526 msg(MSG::VERBOSE) << "Perigee after SP updates at same surface" << endmsg;
527 msg(MSG::VERBOSE) << *per << endmsg;
528 }
529
530 //Get list of InDet Elements
531 std::vector<const InDetDD::SiDetectorElement*> DE;
532 m_roadmaker->detElementsRoad(ctx, fieldCache, *per,Trk::alongMomentum,DE,event_data.roadMakerData());
533 if( int(DE.size()) < m_nclusmin){ //Not enough detector elements to satisfy the minimum number of clusters requirement. Stop
534 ATH_MSG_DEBUG( "Too few detector elements, not expected" );
535 continue;
536 }
537
538 //
539 // --------------- Cast it to measured parameters at 2nd SP with diagonal error matrix
540 //
541 const AmgVector(5)& piv = upTP->parameters();
542
543 //Get the intial Error matrix, diagonalize it and scale the errors
544 std::unique_ptr<const Trk::TrackParameters> mesTP{};
545 const AmgSymMatrix(5)* pvCM = upTP->covariance();
546 if(pvCM){
547 AmgSymMatrix(5) pnvCM;
548 pnvCM<<
549 m_errorScale[0]*m_errorScale[0]*(*pvCM)(0,0),0.,0.,0.,0.,
550 0.,m_errorScale[1]*m_errorScale[1]*(*pvCM)(1,1),0.,0.,0.,
551 0.,0.,m_errorScale[2]*m_errorScale[2]*(*pvCM)(2,2),0.,0.,
552 0.,0.,0.,m_errorScale[3]*m_errorScale[3]*(*pvCM)(3,3),0.,
553 //cppcheck-suppress constStatement
554 0.,0.,0.,0.,m_errorScale[4]*m_errorScale[4]*(*pvCM)(4,4);
555
556 mesTP = upTP->associatedSurface().createUniqueTrackParameters(piv[0],piv[1],piv[2],piv[3],piv[4],pnvCM);
557 if(mesTP){
558 ATH_MSG_DEBUG( "Initial Track Parameters at 1st SP created and scaled from TRT segment, " );
559 ATH_MSG_VERBOSE( *mesTP );
560 }else{
561 continue;
562 }
563 }else{
564 continue;
565 }
566
567 //
568 // --------------- Get the Si extensions using the combinatorial track finding tool
569 //
570 std::vector<Amg::Vector3D> Gp;
571 aTracks = m_tracksfinder->getTracks(combinatorialData, *mesTP, SpVec, Gp, DE, m_trackquality, ctx);
572 if(aTracks.empty()) {
573 ATH_MSG_DEBUG("No tracks found by the combinatorial track finder!");
574 }
575
576 //
577 // --------------- Drop spurious pixel hits
578 //
579 cTracks=cleanTrack(aTracks);
580
581 //
582 // --------------- Add tracks in the track multimap and in the overall list of TRT segment associated tracks
583 //
584 std::list<Trk::Track*>::iterator t = cTracks.begin();
585 while(t!=cTracks.end()) {
586 if(!isNewTrack((*t),event_data)) {
587 delete (*t);
588 cTracks.erase(t++);
589 } else {
590 clusterTrackMap((*t),event_data);
591 associatedSiTrack.push_back((*t++));
592 }
593 }
594 }
595
596 return associatedSiTrack;
597}
const boost::regex re(r_e)
#define M_PI
#define endmsg
#define ATH_MSG_VERBOSE(x)
if(febId1==febId2)
#define pi
bool msgLvl(const MSG::Level lvl) const
MsgStream & msg() const
InDet::SiDetElementRoadMakerData_xk & roadMakerData()
InDet::ITRT_SeededSpacePointFinder::IEventData & spacePointFinderEventData()
bool checkSeed(std::vector< const Trk::SpacePoint * > &, const Trk::TrackSegment &, const Trk::TrackParameters &) const
Check consistency of seed and TRT track segment.
static void clusterTrackMap(Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Map PRDs-tracks.
static bool newClusters(const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Seed used by another track?
static bool newSeed(const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Seed SPs used by other high quality tracks?
static bool isNewTrack(Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Clean-up duplicate tracks.
std::unique_ptr< const Trk::TrackParameters > getTP(MagField::AtlasFieldCache &fieldCache, const Trk::SpacePoint *, const Trk::TrackParameters &, bool &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data) const
Update track parameters through space point propagation.
std::list< Trk::Track * > cleanTrack(std::list< Trk::Track * >) const
Eliminate spurious Pixel clusters in track.
bool solenoidOn() const
status of the magnets
int r
Definition globals.cxx:22
Eigen::Matrix< double, 3, 1 > Vector3D
@ oppositeMomentum
@ alongMomentum

◆ getTP()

std::unique_ptr< const Trk::TrackParameters > InDet::TRT_SeededTrackFinder_ATL::getTP ( MagField::AtlasFieldCache & fieldCache,
const Trk::SpacePoint * SP,
const Trk::TrackParameters & startTP,
bool & outl,
InDet::TRT_SeededTrackFinder_ATL::EventData & event_data ) const
protected

Update track parameters through space point propagation.

Definition at line 604 of file TRT_SeededTrackFinder_ATL.cxx.

607 {
608 std::unique_ptr<const Trk::TrackParameters> iTP{};
609 outl = false;
610 const Trk::Surface& surf = SP->associatedSurface();//Get the associated surface
611 Trk::PropDirection dir = Trk::oppositeMomentum; //Propagate backwards i.e. opposite momentum when filtering
612 Trk::ParticleHypothesis part = Trk::nonInteracting;//Choose a non interacting particle
613 auto eTP = m_proptool->propagate(Gaudi::Hive::currentContext(),
614 startTP,surf,dir,false,m_fieldprop,part); //Propagate
615
616 if(!eTP){
617 ATH_MSG_DEBUG( "Extrapolation to Si element failed");
618 ATH_MSG_VERBOSE( surf );
619 return nullptr;
620 }else{
621 //Based on the hit information update the track parameters and the error matrix
622 Trk::FitQualityOnSurface* sct_fitChi2 = nullptr;
623 std::unique_ptr<const Trk::TrackParameters> uTP = m_updatorTool->addToState(*eTP,SP->localParameters(),SP->localCovariance(),sct_fitChi2);
624 if(!uTP) { //The updator failed
625 if (sct_fitChi2) {
626 ATH_MSG_DEBUG( "Updator returned no update, but a DitQuality object, a leak !");
627 delete sct_fitChi2;
628 }
629 event_data.noise().production(-1,1,*eTP);
630
631 iTP = addNoise(event_data.noise(),*eTP,0);
632 ATH_MSG_DEBUG("The updator failed! Count an outlier ");
633 outl = true;
634 }else{
635 //Keep as a measurement only if fit chi2 less than 25.Otherwise outlier
636 float outlierCut = m_outlierCut;
637 if(!fieldCache.solenoidOn()) outlierCut = 1000000.; // Increase the outlier chi2 cut if solenoid field is OFF
638 if( sct_fitChi2->chiSquared() < outlierCut && std::abs(uTP->parameters()[Trk::theta]) > 0.17 ){
639 ATH_MSG_DEBUG("Update worked, will update return track parameters, chi2: "<<(sct_fitChi2->chiSquared()));
640 event_data.noise().production(-1,1,*uTP);
641 iTP = addNoise(event_data.noise(),*uTP,0);
642 }else{
643 ATH_MSG_DEBUG("Outlier, did not satisfy cuts, chi2: "<<(sct_fitChi2->chiSquared())<<" "<<std::abs(uTP->parameters()[Trk::theta]));
644 event_data.noise().production(-1,1,*eTP);
645 iTP = addNoise(event_data.noise(),*eTP,0);
646 outl = true;
647 }
648 // Clean up
649 delete sct_fitChi2;
650 }
651 }
652 return iTP;
653}
void production(int direction, int model, const Trk::TrackParameters &tp)
std::unique_ptr< const Trk::TrackParameters > addNoise(const SiNoise_bt &, const Trk::TrackParameters &, int) const
Add material effects.
double chiSquared() const
returns the of the overall track fit
Definition FitQuality.h:56
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
virtual const Surface & associatedSurface() const override final
Interface method to get the associated Surface.
PropDirection
PropDirection, enum for direction of the propagation.
@ theta
Definition ParamDefs.h:66
ParticleHypothesis
Enumeration for Particle hypothesis respecting the interaction with material.

◆ getTrack()

std::list< Trk::Track * > InDet::TRT_SeededTrackFinder_ATL::getTrack ( const EventContext & ctx,
InDet::ITRT_SeededTrackFinder::IEventData & event_data,
const Trk::TrackSegment & tS ) const
overridevirtual

Main methods for local track finding.

Main method. Calls private methods and returns a list of Si tracks

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 276 of file TRT_SeededTrackFinder_ATL.cxx.

277 {
278 //non-const because findTrack alters event_data
279 InDet::TRT_SeededTrackFinder_ATL::EventData &event_data = EventData::getPrivateEventData(virt_event_data);
280 // return list, will be copied by value (fix!)
281 std::list<Trk::Track*> aSiTrack;
282
283 // protection for having the expected type of segment parameters
284 if ( tS.localParameters().parameterKey() != 31 ){
285 ATH_MSG_WARNING("Wrong type of TRT segment, rejected !" );
286 return aSiTrack;
287 }
288
289 //Get the track segment information and build the initial track parameters
290 const Trk::LocalParameters& Vp = tS.localParameters();
292 throw std::logic_error("Unhandled surface.");
293 }
294
295 const AmgSymMatrix(5)& locCov = tS.localCovariance();
296 AmgSymMatrix(5) ie = locCov;
297
298 std::unique_ptr<Trk::TrackParameters> newPerPar =
299 tS.associatedSurface().createUniqueTrackParameters(Vp.get(Trk::loc1),
300 Vp.get(Trk::loc2),
301 Vp.get(Trk::phi),
302 Vp.get(Trk::theta),
303 Vp.get(Trk::qOverP),
304 ie);
305
306 if(newPerPar){
307 ATH_MSG_DEBUG("Initial Track Parameters created from TRT segment, ");
308 ATH_MSG_VERBOSE(*newPerPar) ;
309 }else{
310 ATH_MSG_WARNING( "Could not get initial TRT track parameters, rejected! " );
311 return aSiTrack;
312 }
313 constexpr auto horizontalRule{"==============================================================\n"};
314 //Do the actual tracking and smoothing and get the Si track states on surface
315 ATH_MSG_DEBUG(horizontalRule << "Start initial search with 3-4 SCT layer combinations ");
316
317 if (m_searchInCaloROI && !isCaloCompatible( *newPerPar, event_data )) {
318 return aSiTrack;
319 }
320
321 // Get AtlasFieldCache
322 SG::ReadCondHandle<AtlasFieldCacheCondObj> readHandle{m_fieldCondObjInputKey, ctx};
323 const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
324 if (fieldCondObj == nullptr) {
325 ATH_MSG_ERROR("TRT_SeededTrackFinder_ATL::getTracks: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCondObjInputKey.key());
326 return aSiTrack;
327 }
328 MagField::AtlasFieldCache fieldCache;
329 fieldCondObj->getInitializedCache (fieldCache);
330
331 aSiTrack = findTrack(ctx, fieldCache, event_data, *newPerPar, tS);
332 if((aSiTrack.empty())&&(m_bremCorrect)){
333 ATH_MSG_DEBUG(horizontalRule << "Could not create track states on surface for this track!Try to add brem correction.");
334
335 std::unique_ptr<const Trk::TrackParameters> modTP = modifyTrackParameters(*newPerPar,0);
336 ATH_MSG_VERBOSE("Modified TRT Track Parameters for brem. \n"<<(*modTP));
337 aSiTrack = findTrack(ctx, fieldCache, event_data, *modTP, tS);
338 if(aSiTrack.empty()){
339 ATH_MSG_DEBUG("Could not create track states on surface for this track after all!");
340 return aSiTrack;
341 }
342 ATH_MSG_DEBUG(horizontalRule);
343 }
344
345 //Return list of tracks (by value !?)
346 return aSiTrack;
347}
Scalar phi() const
phi method
Scalar theta() const
theta method
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
void getInitializedCache(MagField::AtlasFieldCache &cache) const
get B field cache for evaluation as a function of 2-d or 3-d position.
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
std::list< Trk::Track * > findTrack(const EventContext &ctx, MagField::AtlasFieldCache &fieldCache, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data, const Trk::TrackParameters &, const Trk::TrackSegment &) const
Find the corresponding list of Si tracks.
bool isCaloCompatible(const Trk::TrackParameters &, const InDet::TRT_SeededTrackFinder_ATL::EventData &event_data) const
Only propagate to the Si if the TRT segment is compatible with a calo measurement.
static std::unique_ptr< const Trk::TrackParameters > modifyTrackParameters(const Trk::TrackParameters &, int)
Modify track parameters if brem correction.
int parameterKey() const
Identifier key for matrix expansion/reduction.
virtual constexpr SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
const Surface & associatedSurface() const override final
returns the surface for the local to global transformation
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

◆ initialize()

StatusCode InDet::TRT_SeededTrackFinder_ATL::initialize ( )
overridevirtual

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 91 of file TRT_SeededTrackFinder_ATL.cxx.

91 {
92
93 ATH_MSG_DEBUG("Initializing TRT_SeededTrackFinder_ATL");
95 ATH_CHECK( m_fieldCondObjInputKey.initialize());
96
97 // Get propagator tool
98 ATH_CHECK(m_proptool.retrieve());
99
100 // Get updator tool
101 ATH_CHECK(m_updatorTool.retrieve());
102
103 // Get detector elements road maker tool
104 ATH_CHECK(m_roadmaker.retrieve());
105
106 // Get seeds maker tool
107 ATH_CHECK(m_seedmaker.retrieve());
108
109 // Get combinatorial track finder tool
110 ATH_CHECK( m_tracksfinder.retrieve());
111
112 // Set track quality cuts for track finding tool
114
115 ATH_CHECK( detStore()->retrieve(m_trtId, "TRT_ID"));
116
117 // Get output print level
118 if(msgLvl(MSG::DEBUG)){ dumpconditions(msg(MSG::DEBUG)); msg(MSG::DEBUG) << endmsg;}
119
120 //initlialize readhandlekey
122
123 return StatusCode::SUCCESS;
124
125}
#define ATH_CHECK
Evaluate an expression and check for errors.
const ServiceHandle< StoreGateSvc > & detStore() const
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
void setTrackQualityCuts()
Set the track quality cuts for combinatorial track finding.
retrieve(aClass, aKey=None)
Definition PyKernel.py:110

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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.

◆ interfaceID()

const InterfaceID & InDet::ITRT_SeededTrackFinder::interfaceID ( )
inlinestaticinherited

Definition at line 91 of file ITRT_SeededTrackFinder.h.

92 {
94 }
static const InterfaceID IID_ITRT_SeededTrackFinder("InDet::ITRT_SeededTrackFinder", 1, 0)

◆ isCaloCompatible()

bool InDet::TRT_SeededTrackFinder_ATL::isCaloCompatible ( const Trk::TrackParameters & Tp,
const InDet::TRT_SeededTrackFinder_ATL::EventData & event_data ) const
protected

Only propagate to the Si if the TRT segment is compatible with a calo measurement.

Definition at line 1046 of file TRT_SeededTrackFinder_ATL.cxx.

1047 {
1048 if(!event_data.caloClusterROIEM()) return false;
1049 const AmgVector(5)& Vp = Tp.parameters();
1050 const double F = Vp[2];
1051 ROIPhiRZContainer::const_iterator roi_iter = event_data.caloClusterROIEM()->lowerPhiBound( F, m_phiWidth);
1052 return roi_iter != event_data.caloClusterROIEM()->end();
1053}
static Double_t Tp(Double_t *t, Double_t *par)
#define F(x, y, z)
Definition MD5.cxx:112
const_iterator lowerPhiBound(float phi, float roi_phi_width) const

◆ isNewTrack()

bool InDet::TRT_SeededTrackFinder_ATL::isNewTrack ( Trk::Track * Tr,
InDet::TRT_SeededTrackFinder_ATL::EventData & event_data )
staticprotected

Clean-up duplicate tracks.

Definition at line 944 of file TRT_SeededTrackFinder_ATL.cxx.

945 {
946
947 const Trk::PrepRawData* prd [100];
948 std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
949 ti,t[100],te = event_data.clusterTrack().end();
950 int n = 0 ;
952 m = Tr->measurementsOnTrack()->begin(),
953 me = Tr->measurementsOnTrack()->end ();
954
955 for(; m!=me; ++m) {
956 const Trk::PrepRawData* pr = ((const Trk::RIO_OnTrack*)(*m))->prepRawData();
957 if(pr) {
958 prd[n] =pr;
959 t[n] = event_data.clusterTrack().find(prd[n]);
960 if(t[n]==te) return true;
961 ++n;
962 }
963 }
964
965 int nclt = n;
966
967 for(int i=0; i!=n; ++i) {
968 int nclmax = 0;
969 for(ti=t[i]; ti!=te; ++ti) {
970 if( (*ti).first != prd[i] ) break;
971 int ncl = (*ti).second->trackStateOnSurfaces()->size();
972 if(ncl > nclmax) nclmax = ncl;
973 }
974 if(nclt > nclmax) return true;
975 }
976 return false;
977}

◆ magneticFieldInit()

void InDet::TRT_SeededTrackFinder_ATL::magneticFieldInit ( )
protected

Private Methods.

Get Magnetic field properties

Definition at line 1060 of file TRT_SeededTrackFinder_ATL.cxx.

1060 {
1061 if(m_fieldmode == "NoField") m_fieldprop = Trk::MagneticFieldProperties(Trk::NoField );
1062 else if(m_fieldmode == "MapSolenoid") m_fieldprop = Trk::MagneticFieldProperties(Trk::FastField);
1063 else m_fieldprop = Trk::MagneticFieldProperties(Trk::FullField);
1064}
StringProperty m_fieldmode
Protected Data.
@ FastField
call the fast field access method of the FieldSvc
@ NoField
Field is set to 0., 0., 0.,.
@ FullField
Field is set to be realistic, but within a given Volume.

◆ modifyTrackParameters()

std::unique_ptr< const Trk::TrackParameters > InDet::TRT_SeededTrackFinder_ATL::modifyTrackParameters ( const Trk::TrackParameters & TP,
int mode )
staticprotected

Modify track parameters if brem correction.

The mode corresponds to whether the track parameters are modified before the seed (0) or before the pixel propagation (1)
Get the track parameters

Correct inverse momentum and covariance. Inverse momentum halved, i.e. momentum doubled

Definition at line 733 of file TRT_SeededTrackFinder_ATL.cxx.

733 {
736 const AmgVector(5)& pV = TP.parameters();
737 double ip[5] = {pV[0], pV[1], pV[2], pV[3], pV[4]};
738
740 const double & q = ip[4]; //no need to take std::abs, its squared next
741 const double covarianceIMom = 0.25*q*q;
742 ip[4] *= 0.5;
743
744 const AmgSymMatrix(5) * CM = TP.covariance();
745 AmgSymMatrix(5) nM = (*CM);
746
747 if(mode==0){ //Modification initiated before seed propagation
748 nM(4,4) = 10.*(0.1*((*CM)(4,4))+covarianceIMom);
749 }
750 if(mode==1){ //Modification initiated before pixel propagation
751 nM(4,4)+=covarianceIMom;
752 }
753 return TP.associatedSurface().createUniqueTrackParameters(ip[0], ip[1], ip[2], ip[3], ip[4], nM);
754}
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
virtual ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theat, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const =0
Use the Surface as a ParametersBase constructor, from local parameters - charged.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ newClusters()

bool InDet::TRT_SeededTrackFinder_ATL::newClusters ( const std::vector< const Trk::SpacePoint * > & Sp,
InDet::TRT_SeededTrackFinder_ATL::EventData & event_data )
staticprotected

Seed used by another track?

Definition at line 802 of file TRT_SeededTrackFinder_ATL.cxx.

803 {
804 const Trk::PrepRawData* prd [ 40];
805 const Trk::Track* trk[2][200];
806 std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
807 t[40],te = event_data.clusterTrack().end();
808 std::vector<const Trk::SpacePoint*>::const_iterator s=Sp.begin(),se=Sp.end();
809 int n = 0;
810
811 //If at least one of the clusters in the seed is not used by a track the seed is good
812 for(; s!=se; ++s) {
813 if((*s)->clusterList().first ) {
814 prd[n] = (*s)->clusterList().first;
815 t [n] = event_data.clusterTrack().find(prd[n]);
816 if(t[n]==te) return true;
817 ++n;
818 }
819 if((*s)->clusterList().second) {
820 prd[n] = (*s)->clusterList().second;
821 t [n] = event_data.clusterTrack().find(prd[n]);
822 if(t[n]==te) return true;
823 ++n;
824 }
825 if(n==40) break;
826 }
827 if(!n) return false;
828
829 //Array of pointers to the different tracks that the first used cluster belongs to
830 int m = 0;
831 auto & pTracks=t[0];
832 for(; pTracks!=te; ++pTracks) {
833 if (m==30) return false;
834 if( (*pTracks).first != prd[0] ) break;
835 trk[0][m++] = (*pTracks).second;
836 if(m==200) break;
837 }
838
839 //For a seed to be declared bad, all other clusters should belong to the same track as that of the first used cluster
840 int in=0, ou=1;
841 for(int i=1; i!=n; ++i) {
842 int l = 0; //Number of tracks that share the same clusters
843 auto & pTheseTracks=t[i];
844 for(; pTheseTracks!=te; ++pTheseTracks) {
845 if( (*pTheseTracks).first != prd[i] ) break;
846 for(int j=0; j!=m; ++j) {
847 if((*pTheseTracks).second == trk[in][j]) {trk[ou][l++]= trk[in][j];
848 break;
849 }
850 }
851 }
852 if(l==0) return true; //At least one of the seed clusters belongs to a track different from that of the first used clusters
853 m=l;
854 if(in==0) {
855 in=1; ou=0;
856 } else {
857 in=0; ou=1;
858 }
859 }
860
861 return false;
862}
l
Printing final latex table to .tex output file.

◆ newEvent()

std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventData > InDet::TRT_SeededTrackFinder_ATL::newEvent ( const EventContext & ctx,
SiCombinatorialTrackFinderData_xk & combinatorialData ) const
overridevirtual

New event initialization.

Get the seeds

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 210 of file TRT_SeededTrackFinder_ATL.cxx.

211{
212
214 auto event_data_p = std::make_unique<InDet::TRT_SeededTrackFinder_ATL::EventData>(combinatorialData,
215 m_seedmaker->newEvent());
216 // New event for track finder tool
217 m_tracksfinder->newEvent(ctx, event_data_p->combinatorialData());
218
219 // Print event information
220 if(msgLvl(MSG::DEBUG)) {
221 dumpconditions(msg(MSG::DEBUG));
222 msg(MSG::DEBUG) << endmsg;
223 }
224
225 // Get the calo ROI:
226 if(m_searchInCaloROI ) {
227 SG::ReadHandle<ROIPhiRZContainer> calo_rois(m_caloClusterROIKey, ctx);
228 if (!calo_rois.isValid()) {
229 ATH_MSG_FATAL("Failed to get EM Calo cluster collection " << m_caloClusterROIKey );
230 }
231 event_data_p->setCaloClusterROIEM(*calo_rois);
232 }
233 return event_data_p;
234}
#define ATH_MSG_FATAL(x)

◆ newRegion()

std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventData > InDet::TRT_SeededTrackFinder_ATL::newRegion ( const EventContext & ctx,
SiCombinatorialTrackFinderData_xk & combinatorialData,
const std::vector< IdentifierHash > & listOfPixIds,
const std::vector< IdentifierHash > & listOfSCTIds ) const
overridevirtual

New region intialization.

Implements InDet::ITRT_SeededTrackFinder.

Definition at line 238 of file TRT_SeededTrackFinder_ATL.cxx.

240 {
241 auto event_data_p = std::make_unique<InDet::TRT_SeededTrackFinder_ATL::EventData>(combinatorialData,
242 m_seedmaker->newRegion(listOfPixIds,listOfSCTIds));
243
244 // New event for track finder tool
245 m_tracksfinder->newEvent(ctx, event_data_p->combinatorialData());
246
247
248 // Print event information
249 if(msgLvl(MSG::DEBUG)) {
250 dumpconditions(msg(MSG::DEBUG));
251 msg(MSG::DEBUG) << endmsg;
252 }
253
254 return event_data_p;
255}

◆ newSeed()

bool InDet::TRT_SeededTrackFinder_ATL::newSeed ( const std::vector< const Trk::SpacePoint * > & Sp,
InDet::TRT_SeededTrackFinder_ATL::EventData & event_data )
staticprotected

Seed SPs used by other high quality tracks?

Definition at line 870 of file TRT_SeededTrackFinder_ATL.cxx.

871 {
872 const Trk::PrepRawData* prd [ 40];
873 const Trk::Track* trk[2][200];
874 std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
875 tt,t[40],te = event_data.clusterTrack().end();
876
877 std::vector<const Trk::SpacePoint*>::const_iterator s=Sp.begin(),se=Sp.end();
878 int n = 0;
879 int nc = 0;
880 for(; s!=se; ++s) {
881 if((*s)->clusterList().first ) {
882 prd[n] = (*s)->clusterList().first;
883 t [n] = event_data.clusterTrack().find(prd[n]); if(t[n]!=te) ++nc; ++n;
884 }
885 if((*s)->clusterList().second) {
886 prd[n] = (*s)->clusterList().second;
887 t [n] = event_data.clusterTrack().find(prd[n]); if(t[n]!=te) ++nc; ++n;
888 }
889 if(n>=40) break;
890 }
891 if(!nc) return true;
892 if(n==nc) {
893 int m = 0;
894 for(tt=t[0]; tt!=te; ++tt) {
895 if( (*tt).first != prd[0] ) break;
896 trk[0][m++] = (*tt).second;
897 if(m==200) break;
898 }
899 int in=0, ou=1, i=1;
900 for(; i!=n; ++i) {
901 int l = 0;
902 for(tt=t[i]; t[i]!=te; ++tt) {
903 if( (*tt).first != prd[i] ) break;
904 for(int j=0; j!=m; ++j) {
905 if((*tt).second == trk[in][j]) {
906 trk[ou][l++]= trk[in][j];
907 break;
908 }
909 }
910 }
911 if(l==0) break;
912 m=l;
913 if(in==0) {
914 in=1;
915 ou=0;
916 } else {
917 in=0;
918 ou=1;
919 }
920 }
921 if(i==n) return false;
922 }
923
924 //if(!(*Sp.rbegin())->clusterList().second) return true;
925
926 int h = 0;
927 for(int i=0; i!=n; ++i) {
928 for(tt=t[i]; t[i]!=te; ++tt) {
929 if( (*tt).first != prd[i] ) break;
930 if((*tt).second->trackStateOnSurfaces()->size() >= 10) {
931 ++h;
932 break;
933 }
934 }
935 }
936 return h == 0;
937}

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setTrackQualityCuts()

void InDet::TRT_SeededTrackFinder_ATL::setTrackQualityCuts ( )
protected

Set the track quality cuts for combinatorial track finding.

Definition at line 761 of file TRT_SeededTrackFinder_ATL.cxx.

761 {
762 // Integer cuts
763 //
764 m_trackquality.setIntCut ("MinNumberOfClusters", m_nclusmin );
765 m_trackquality.setIntCut ("MinNumberOfWClusters", m_nwclusmin );
766 m_trackquality.setIntCut ("MaxNumberOfHoles" , m_nholesmax );
767 m_trackquality.setIntCut ("MaxHolesGap" , m_dholesmax );
768 if( m_useassoTool ) m_trackquality.setIntCut ("UseAssociationTool",1);
769 else m_trackquality.setIntCut ("UseAssociationTool",0);
770
771 // Double cuts
772 //
773 m_trackquality.setDoubleCut("pTmin" ,m_pTmin );
774 m_trackquality.setDoubleCut("MaxXi2forCluster" ,m_xi2max );
775 m_trackquality.setDoubleCut("MaxXi2forOutlier" ,m_xi2maxNoAdd);
776 m_trackquality.setDoubleCut("MaxXi2forSearch" ,m_xi2maxlink );
777}

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::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< AlgTool > >::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_bremCorrect

BooleanProperty InDet::TRT_SeededTrackFinder_ATL::m_bremCorrect
protected
Initial value:
{this, "BremCorrection", false,
"Optional Brem correction"}

Definition at line 199 of file TRT_SeededTrackFinder_ATL.h.

199 {this, "BremCorrection", false,
200 "Optional Brem correction"};

◆ m_caloClusterROIKey

SG::ReadHandleKey<ROIPhiRZContainer> InDet::TRT_SeededTrackFinder_ATL::m_caloClusterROIKey {this, "EMROIPhiRZContainer", ""}
protected

Definition at line 213 of file TRT_SeededTrackFinder_ATL.h.

213{this, "EMROIPhiRZContainer", ""};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_dholesmax

IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_dholesmax
protected
Initial value:
{this, "nHolesGapMax", 1,
"Max gap between holes"}

Definition at line 194 of file TRT_SeededTrackFinder_ATL.h.

194 {this, "nHolesGapMax", 1,
195 "Max gap between holes"};

◆ m_errorScale

DoubleArrayProperty InDet::TRT_SeededTrackFinder_ATL::m_errorScale
protected
Initial value:
{this, "ErrorScaling", {1., 1., 1., 1., 1.},
"Optional error scaling of track parameters"}

Definition at line 206 of file TRT_SeededTrackFinder_ATL.h.

207 {this, "ErrorScaling", {1., 1., 1., 1., 1.},
208 "Optional error scaling of track parameters"};

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_fieldCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> InDet::TRT_SeededTrackFinder_ATL::m_fieldCondObjInputKey
protected
Initial value:
{this, "AtlasFieldCacheCondObj",
"fieldCondObj", "Name of the Magnetic Field conditions object key"}

Definition at line 180 of file TRT_SeededTrackFinder_ATL.h.

180 {this, "AtlasFieldCacheCondObj",
181 "fieldCondObj", "Name of the Magnetic Field conditions object key"};

◆ m_fieldmode

StringProperty InDet::TRT_SeededTrackFinder_ATL::m_fieldmode
protected
Initial value:
{this, "MagneticFieldMode", "MapSolenoid",
"Magnetic field mode"}

Protected Data.

Definition at line 162 of file TRT_SeededTrackFinder_ATL.h.

162 {this, "MagneticFieldMode", "MapSolenoid",
163 "Magnetic field mode"};

◆ m_fieldprop

Trk::MagneticFieldProperties InDet::TRT_SeededTrackFinder_ATL::m_fieldprop
protected

Definition at line 165 of file TRT_SeededTrackFinder_ATL.h.

◆ m_nclusmin

IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_nclusmin {this, "nClustersMin", 4, "Min number clusters"}
protected

Definition at line 196 of file TRT_SeededTrackFinder_ATL.h.

196{this, "nClustersMin", 4, "Min number clusters"};

◆ m_nholesmax

IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_nholesmax {this, "nHolesMax", 1, "Max number holes"}
protected

Definition at line 193 of file TRT_SeededTrackFinder_ATL.h.

193{this, "nHolesMax", 1, "Max number holes"};

◆ m_nwclusmin

IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_nwclusmin
protected
Initial value:
{this, "nWClustersMin", 4,
"Min number weighted clusters"}

Definition at line 197 of file TRT_SeededTrackFinder_ATL.h.

197 {this, "nWClustersMin", 4,
198 "Min number weighted clusters"};

◆ m_outlierCut

DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_outlierCut
protected
Initial value:
{this, "OutlierCut", 25.,
"Outlier chi2 cut when propagating through the seed"}

Definition at line 209 of file TRT_SeededTrackFinder_ATL.h.

209 {this, "OutlierCut", 25.,
210 "Outlier chi2 cut when propagating through the seed"};

◆ m_phiWidth

DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_phiWidth {this, "phiWidth", 0.3}
protected

Definition at line 277 of file TRT_SeededTrackFinder_ATL.h.

277{this, "phiWidth", 0.3};

◆ m_propR

BooleanProperty InDet::TRT_SeededTrackFinder_ATL::m_propR
protected
Initial value:
{this, "ConsistentSeeds", false,
"Check seed-TRT segment consistency at large eta"}

Definition at line 201 of file TRT_SeededTrackFinder_ATL.h.

201 {this, "ConsistentSeeds", false,
202 "Check seed-TRT segment consistency at large eta"};

◆ m_proptool

ToolHandle<Trk::IPropagator> InDet::TRT_SeededTrackFinder_ATL::m_proptool {this, "PropagatorTool", "Trk::RungeKuttaPropagator/InDetPropagator"}
protected

Definition at line 173 of file TRT_SeededTrackFinder_ATL.h.

174{this, "PropagatorTool", "Trk::RungeKuttaPropagator/InDetPropagator"};

◆ m_pTmin

DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_pTmin {this, "pTmin", 500., "min pT"}
protected

Definition at line 192 of file TRT_SeededTrackFinder_ATL.h.

192{this, "pTmin", 500., "min pT"};

◆ m_roadmaker

ToolHandle<InDet::ISiDetElementsRoadMaker> InDet::TRT_SeededTrackFinder_ATL::m_roadmaker {this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"}
protected

Magnetic field properties.

Tools used

Definition at line 169 of file TRT_SeededTrackFinder_ATL.h.

170{this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"};

◆ m_searchInCaloROI

BooleanProperty InDet::TRT_SeededTrackFinder_ATL::m_searchInCaloROI
protected
Initial value:
{this, "SearchInCaloROI", false,
"Outlier chi2 cut when propagating through the seed"}

Definition at line 211 of file TRT_SeededTrackFinder_ATL.h.

211 {this, "SearchInCaloROI", false,
212 "Outlier chi2 cut when propagating through the seed"};

◆ m_seedmaker

ToolHandle<InDet::ITRT_SeededSpacePointFinder> InDet::TRT_SeededTrackFinder_ATL::m_seedmaker {this, "SeedTool", ""}
protected

Definition at line 171 of file TRT_SeededTrackFinder_ATL.h.

172{this, "SeedTool", ""};

◆ m_trackquality

InDet::TrackQualityCuts InDet::TRT_SeededTrackFinder_ATL::m_trackquality
protected

Definition at line 205 of file TRT_SeededTrackFinder_ATL.h.

◆ m_tracksfinder

ToolHandle<InDet::ISiCombinatorialTrackFinder> InDet::TRT_SeededTrackFinder_ATL::m_tracksfinder {this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"}
protected

Definition at line 177 of file TRT_SeededTrackFinder_ATL.h.

178{this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"};

◆ m_trtId

const TRT_ID* InDet::TRT_SeededTrackFinder_ATL::m_trtId = nullptr
protected

ID TRT helper.

Definition at line 184 of file TRT_SeededTrackFinder_ATL.h.

◆ m_updatorTool

ToolHandle<Trk::IUpdator> InDet::TRT_SeededTrackFinder_ATL::m_updatorTool {this, "UpdatorTool", "Trk::KalmanUpdator_xk/InDetPatternUpdator"}
protected

Definition at line 175 of file TRT_SeededTrackFinder_ATL.h.

176{this, "UpdatorTool", "Trk::KalmanUpdator_xk/InDetPatternUpdator"};

◆ m_useassoTool

BooleanProperty InDet::TRT_SeededTrackFinder_ATL::m_useassoTool
protected
Initial value:
{this, "UseAssociationTool", false,
"Use prd-track association tool"}

Definition at line 203 of file TRT_SeededTrackFinder_ATL.h.

203 {this, "UseAssociationTool", false,
204 "Use prd-track association tool"};

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_xi2max

DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_xi2max {this, "Xi2max", 15., "max Xi2 for updators"}
protected

Track quality cuts to be passed to the combinatorial track finder.

Definition at line 187 of file TRT_SeededTrackFinder_ATL.h.

187{this, "Xi2max", 15., "max Xi2 for updators"};

◆ m_xi2maxlink

DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_xi2maxlink
protected
Initial value:
{this, "Xi2maxlink", 100.,
"max Xi2 for clusters"}

Definition at line 190 of file TRT_SeededTrackFinder_ATL.h.

190 {this, "Xi2maxlink", 100.,
191 "max Xi2 for clusters"};

◆ m_xi2maxNoAdd

DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_xi2maxNoAdd
protected
Initial value:
{this, "Xi2maxNoAdd", 50.,
"max Xi2 for outliers"}

Definition at line 188 of file TRT_SeededTrackFinder_ATL.h.

188 {this, "Xi2maxNoAdd", 50.,
189 "max Xi2 for outliers"};

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