|
ATLAS Offline Software
|
#include <TRT_SeededTrackFinder_ATL.h>
|
| TRT_SeededTrackFinder_ATL (const std::string &, const std::string &, const IInterface *) |
| Standard tool methods
More...
|
|
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
More...
|
|
virtual std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventData > | newEvent (const EventContext &ctx, SiCombinatorialTrackFinderData_xk &combinatorialData) const override |
| New event initialization. More...
|
|
virtual std::unique_ptr< InDet::ITRT_SeededTrackFinder::IEventData > | newRegion (const EventContext &ctx, SiCombinatorialTrackFinderData_xk &combinatorialData, const std::vector< IdentifierHash > &, const std::vector< IdentifierHash > &) const override |
| New region intialization. More...
|
|
virtual void | endEvent (InDet::ITRT_SeededTrackFinder::IEventData &event_data) const override |
| End of event tasks
More...
|
|
MsgStream & | dump (MsgStream &out) const override |
| Print internal tool parameters and status
More...
|
|
std::ostream & | dump (std::ostream &out) const override |
|
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 |
|
|
void | magneticFieldInit () |
| Private Methods
More...
|
|
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
More...
|
|
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
More...
|
|
std::unique_ptr< const Trk::TrackParameters > | addNoise (const SiNoise_bt &, const Trk::TrackParameters &, int) const |
| Add material effects
More...
|
|
bool | checkSeed (std::vector< const Trk::SpacePoint * > &, const Trk::TrackSegment &, const Trk::TrackParameters &) const |
| Check consistency of seed and TRT track segment. More...
|
|
void | setTrackQualityCuts () |
| Set the track quality cuts for combinatorial track finding
More...
|
|
std::list< Trk::Track * > | cleanTrack (std::list< Trk::Track * >) const |
| Eliminate spurious Pixel clusters in track
More...
|
|
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. More...
|
|
MsgStream & | dumpconditions (MsgStream &out) const |
|
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...
|
|
|
StringProperty | m_fieldmode |
| Protected Data
More...
|
|
Trk::MagneticFieldProperties | m_fieldprop |
|
ToolHandle< InDet::ISiDetElementsRoadMaker > | m_roadmaker {this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"} |
| Magnetic field properties. More...
|
|
ToolHandle< InDet::ITRT_SeededSpacePointFinder > | m_seedmaker {this, "SeedTool", ""} |
|
ToolHandle< Trk::IPropagator > | m_proptool {this, "PropagatorTool", "Trk::RungeKuttaPropagator/InDetPropagator"} |
|
ToolHandle< Trk::IUpdator > | m_updatorTool {this, "UpdatorTool", "Trk::KalmanUpdator_xk/InDetPatternUpdator"} |
|
ToolHandle< InDet::ISiCombinatorialTrackFinder > | m_tracksfinder {this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"} |
|
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > | m_fieldCondObjInputKey |
|
const TRT_ID * | m_trtId = nullptr |
| ID TRT helper. More...
|
|
DoubleProperty | m_xi2max {this, "Xi2max", 15., "max Xi2 for updators"} |
| Track quality cuts to be passed to the combinatorial track finder. More...
|
|
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< ROIPhiRZContainer > | m_caloClusterROIKey {this, "EMROIPhiRZContainer", ""} |
|
DoubleProperty | m_phiWidth {this, "phiWidth", 0.3} |
|
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.
◆ StoreGateSvc_t
◆ TRT_SeededTrackFinder_ATL()
InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL |
( |
const std::string & |
t, |
|
|
const std::string & |
n, |
|
|
const IInterface * |
p |
|
) |
| |
◆ ~TRT_SeededTrackFinder_ATL()
InDet::TRT_SeededTrackFinder_ATL::~TRT_SeededTrackFinder_ATL |
( |
| ) |
|
|
virtualdefault |
◆ addNoise()
Add material effects
Definition at line 661 of file TRT_SeededTrackFinder_ATL.cxx.
663 const double covAzim=
noise.covarianceAzim();
664 const double covPola=
noise.covariancePola();
665 const double covIMom=
noise.covarianceIMom();
666 const double corIMom=
noise.correctionIMom();
668 const AmgVector(5)& Vp1 = P1.parameters();
669 double M[5]={Vp1[0],Vp1[1],Vp1[2],Vp1[3],Vp1[4]};
682 return P1.associatedSurface().createUniqueTrackParameters(M[0],M[1],M[2],M[3],M[4],nC);
◆ checkSeed()
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.
697 int nEC = 0;
double gz = 0.;
710 if(isB==2 || isB==-2) nEC++;
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;
◆ 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.
985 std::list<Trk::Track*> cleanSiTrack;
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){
995 if(!newtsos)
continue;
1002 if(RawDataClus==
nullptr){
1019 if(nPixHits==1 && (sctR-pixR)>200.){
1020 auto cltsos = std::make_unique<Trk::TrackStates>();
1021 auto fq = (*it)->fitQuality()->uniqueClone();
1024 for(p_tsos=newtsos->
begin()+nPixHits;p_tsos!=newtsos->
end();++p_tsos){
1025 cltsos->push_back( (*p_tsos)->clone() );
1031 cleanSiTrack.push_back(nTrack);
1034 cleanSiTrack.push_back((*
it));
1038 return cleanSiTrack;
◆ clusterTrackMap()
◆ 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]
◆ 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()
◆ dump() [1/2]
MsgStream & InDet::TRT_SeededTrackFinder_ATL::dump |
( |
MsgStream & |
out | ) |
const |
|
overridevirtual |
◆ dump() [2/2]
std::ostream & InDet::TRT_SeededTrackFinder_ATL::dump |
( |
std::ostream & |
out | ) |
const |
|
overridevirtual |
◆ dumpconditions()
MsgStream & InDet::TRT_SeededTrackFinder_ATL::dumpconditions |
( |
MsgStream & |
out | ) |
const |
|
protected |
Definition at line 151 of file TRT_SeededTrackFinder_ATL.cxx.
152 auto paddedName=[](
const auto &
str)->std::string{
160 auto format = [](MsgStream&
m)->MsgStream&{
161 m<<std::setw(12)<<std::setprecision(5);
165 constexpr std::string_view fieldmode[9] ={
"NoField" ,
"ConstantField",
"SolenoidalField",
166 "ToroidalField" ,
"Grid3DField" ,
"RealisticField" ,
167 "UndefinedField",
"AthenaField" ,
"?????" };
170 if(mode<0 || mode>8 )
mode = 8;
172 constexpr
auto horizontalRule{
173 "|-----------------------------------------------------------------------------------------|\n"
176 constexpr
auto padding{
" |\n"};
178 out<<
"| Tool for propagation | "<<paddedName(
m_proptool.type());
183 out<<
"| Magnetic field mode | "<<paddedName(fieldmode[
mode]);
◆ endEvent()
◆ 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 InDet::TRT_SeededTrackFinder_ATL::finalize |
( |
| ) |
|
|
overridevirtual |
◆ findTrack()
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.
358 SiCombinatorialTrackFinderData_xk& combinatorialData=event_data.
combinatorialData();
360 std::list<Trk::Track*> associatedSiTrack;
361 constexpr
double pi2 = 2.*
M_PI;
365 std::list<std::pair<const Trk::SpacePoint*,const Trk::SpacePoint*> >
368 ATH_MSG_DEBUG(
"---------------> SP SEED LIST SIZE " << SpE.size() );
369 if(SpE.empty()){
return associatedSiTrack;}
376 std::vector<const Trk::SpacePoint*> SpVec{
nullptr,
nullptr};
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 ;
381 std::list<Trk::Track*> cTracks ;
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() );
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;
403 SpVec[0]=(pSP.second);
404 SpVec[1]=(pSP.first);
406 ATH_MSG_DEBUG(
"Seed SPs already used by a single track. Ignore..." );
409 if(!
newSeed(SpVec,event_data)) {
410 ATH_MSG_DEBUG(
"Seed SPs already used by other tracks. Ignore..." );
418 bool seedGood =
checkSeed(SpVec,tS,initTP);
420 ATH_MSG_DEBUG(
"Seed not consistent with TRT segment. Ignore..." );
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];
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;
456 initTP.associatedSurface().createUniqueTrackParameters(
457 iv[0], iv[1], newPhi, newTheta, iv[4], nvCM);
460 ATH_MSG_DEBUG(
"Initial Track Parameters created and scaled from TRT segment, ");
463 ATH_MSG_DEBUG(
"Could not get initial TRT track parameters! " );
475 std::unique_ptr<const Trk::TrackParameters> upTP =
getTP(fieldCache, pSP.first,*niTP,outl,event_data);
478 ATH_MSG_DEBUG(
"Extrapolation through seed failed!Seed bogus.Move to next seed" );
488 if (pSP.first != pSP.second) {
491 std::unique_ptr<const Trk::TrackParameters> newTP =
getTP(fieldCache, pSP.second,*upTP,outl,event_data);
494 ATH_MSG_DEBUG(
"Extrapolation through seed failed!Seed bogus.Move to next seed" );
503 upTP = std::move(newTP);
531 std::vector<const InDetDD::SiDetectorElement*> DE;
541 const AmgVector(5)& piv = upTP->parameters();
544 std::unique_ptr<const Trk::TrackParameters> mesTP{};
556 mesTP = upTP->associatedSurface().createUniqueTrackParameters(piv[0],piv[1],piv[2],piv[3],piv[4],pnvCM);
558 ATH_MSG_DEBUG(
"Initial Track Parameters at 1st SP created and scaled from TRT segment, " );
570 std::vector<Amg::Vector3D> Gp;
572 if(aTracks.empty()) {
573 ATH_MSG_DEBUG(
"No tracks found by the combinatorial track finder!");
585 while(
t!=cTracks.end()) {
591 associatedSiTrack.push_back((*
t++));
596 return associatedSiTrack;
◆ getTP()
Update track parameters through space point propagation
Definition at line 604 of file TRT_SeededTrackFinder_ATL.cxx.
608 std::unique_ptr<const Trk::TrackParameters> iTP{};
613 auto eTP =
m_proptool->propagate(Gaudi::Hive::currentContext(),
626 ATH_MSG_DEBUG(
"Updator returned no update, but a DitQuality object, a leak !");
◆ getTrack()
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.
281 std::list<Trk::Track*> aSiTrack;
292 throw std::logic_error(
"Unhandled surface.");
299 tS.associatedSurface().createUniqueTrackParameters(Vp.
get(
Trk::
loc1),
307 ATH_MSG_DEBUG(
"Initial Track Parameters created from TRT segment, ");
310 ATH_MSG_WARNING(
"Could not get initial TRT track parameters, rejected! " );
313 constexpr
auto horizontalRule{
"==============================================================\n"};
315 ATH_MSG_DEBUG(horizontalRule <<
"Start initial search with 3-4 SCT layer combinations ");
324 if (fieldCondObj ==
nullptr) {
329 fieldCondObj->getInitializedCache (fieldCache);
331 aSiTrack =
findTrack(ctx, fieldCache, event_data, *newPerPar, tS);
333 ATH_MSG_DEBUG(horizontalRule <<
"Could not create track states on surface for this track!Try to add brem correction.");
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!");
◆ initialize()
StatusCode InDet::TRT_SeededTrackFinder_ATL::initialize |
( |
| ) |
|
|
overridevirtual |
◆ 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.
◆ interfaceID()
const InterfaceID & InDet::ITRT_SeededTrackFinder::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ isCaloCompatible()
◆ isNewTrack()
Clean-up duplicate tracks
Definition at line 944 of file TRT_SeededTrackFinder_ATL.cxx.
948 std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
960 if(
t[
n]==te)
return true;
967 for(
int i=0;
i!=
n; ++
i) {
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;
974 if(nclt > nclmax)
return true;
◆ magneticFieldInit()
void InDet::TRT_SeededTrackFinder_ATL::magneticFieldInit |
( |
| ) |
|
|
protected |
◆ modifyTrackParameters()
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.
736 const AmgVector(5)& pV = TP.parameters();
737 double ip[5] = {pV[0], pV[1], pV[2], pV[3], pV[4]};
740 const double &
q =
ip[4];
741 const double covarianceIMom = 0.25*
q*
q;
748 nM(4,4) = 10.*(0.1*((*CM)(4,4))+covarianceIMom);
751 nM(4,4)+=covarianceIMom;
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ newClusters()
Seed used by another track?
Definition at line 802 of file TRT_SeededTrackFinder_ATL.cxx.
806 std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
808 std::vector<const Trk::SpacePoint*>::const_iterator
s=Sp.begin(),
se=Sp.end();
813 if((*s)->clusterList().first ) {
814 prd[
n] = (*s)->clusterList().first;
816 if(
t[
n]==te)
return true;
819 if((*s)->clusterList().second) {
820 prd[
n] = (*s)->clusterList().second;
822 if(
t[
n]==te)
return true;
832 for(; pTracks!=te; ++pTracks) {
833 if (
m==30)
return false;
834 if( (*pTracks).first != prd[0] )
break;
835 trk[0][
m++] = (*pTracks).second;
841 for(
int i=1;
i!=
n; ++
i) {
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];
852 if(
l==0)
return true;
◆ newEvent()
New event initialization.
Get the seeds
Implements InDet::ITRT_SeededTrackFinder.
Definition at line 210 of file TRT_SeededTrackFinder_ATL.cxx.
214 auto event_data_p = std::make_unique<InDet::TRT_SeededTrackFinder_ATL::EventData>(combinatorialData,
228 if (!calo_rois.isValid()) {
231 event_data_p->setCaloClusterROIEM(*calo_rois);
◆ newRegion()
◆ newSeed()
Seed SPs used by other high quality tracks?
Definition at line 870 of file TRT_SeededTrackFinder_ATL.cxx.
874 std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
877 std::vector<const Trk::SpacePoint*>::const_iterator
s=Sp.begin(),
se=Sp.end();
881 if((*s)->clusterList().first ) {
882 prd[
n] = (*s)->clusterList().first;
885 if((*s)->clusterList().second) {
886 prd[
n] = (*s)->clusterList().second;
895 if( (*tt).first != prd[0] )
break;
896 trk[0][
m++] = (*tt).second;
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];
921 if(
i==
n)
return false;
927 for(
int i=0;
i!=
n; ++
i) {
929 if( (*tt).first != prd[
i] )
break;
930 if((*tt).second->trackStateOnSurfaces()->size() >= 10) {
◆ 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.
◆ renounce()
◆ renounceArray()
◆ setTrackQualityCuts()
void InDet::TRT_SeededTrackFinder_ATL::setTrackQualityCuts |
( |
| ) |
|
|
protected |
◆ 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_bremCorrect
BooleanProperty InDet::TRT_SeededTrackFinder_ATL::m_bremCorrect |
|
protected |
◆ m_caloClusterROIKey
◆ m_detStore
◆ m_dholesmax
IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_dholesmax |
|
protected |
◆ 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.
◆ m_evtStore
◆ m_fieldCondObjInputKey
Initial value:{this, "AtlasFieldCacheCondObj",
"fieldCondObj", "Name of the Magnetic Field conditions object key"}
Definition at line 180 of file TRT_SeededTrackFinder_ATL.h.
◆ 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.
◆ m_fieldprop
◆ m_nclusmin
IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_nclusmin {this, "nClustersMin", 4, "Min number clusters"} |
|
protected |
◆ m_nholesmax
IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_nholesmax {this, "nHolesMax", 1, "Max number holes"} |
|
protected |
◆ m_nwclusmin
IntegerProperty InDet::TRT_SeededTrackFinder_ATL::m_nwclusmin |
|
protected |
◆ 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.
◆ m_phiWidth
DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_phiWidth {this, "phiWidth", 0.3} |
|
protected |
◆ 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.
◆ m_proptool
◆ m_pTmin
DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_pTmin {this, "pTmin", 500., "min pT"} |
|
protected |
◆ m_roadmaker
◆ 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.
◆ m_seedmaker
◆ m_trackquality
◆ m_tracksfinder
◆ m_trtId
const TRT_ID* InDet::TRT_SeededTrackFinder_ATL::m_trtId = nullptr |
|
protected |
◆ m_updatorTool
◆ m_useassoTool
BooleanProperty InDet::TRT_SeededTrackFinder_ATL::m_useassoTool |
|
protected |
◆ m_varHandleArraysDeclared
◆ m_vhka
◆ m_xi2max
DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_xi2max {this, "Xi2max", 15., "max Xi2 for updators"} |
|
protected |
◆ m_xi2maxlink
DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_xi2maxlink |
|
protected |
◆ m_xi2maxNoAdd
DoubleProperty InDet::TRT_SeededTrackFinder_ATL::m_xi2maxNoAdd |
|
protected |
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
JetConstituentVector::iterator iterator
const ROIPhiRZContainer * caloClusterROIEM() const
BooleanProperty m_useassoTool
DoubleProperty m_xi2maxNoAdd
Contains information about the 'fitter' of this track.
Const iterator class for DataVector/DataList.
Trk::MagneticFieldProperties m_fieldprop
BooleanProperty m_searchInCaloROI
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
void setIntCut(const std::string &, int)
Scalar phi() const
phi method
bool checkSeed(std::vector< const Trk::SpacePoint * > &, const Trk::TrackSegment &, const Trk::TrackParameters &) const
Check consistency of seed and TRT track segment.
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 bool isNewTrack(Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Clean-up duplicate tracks
int parameterKey() const
Identifier key for matrix expansion/reduction.
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Scalar theta() const
theta method
ToolHandle< InDet::ISiDetElementsRoadMaker > m_roadmaker
Magnetic field properties.
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
DoubleArrayProperty m_errorScale
@ loc2
generic first and second local coordinate
IntegerProperty m_nholesmax
#define ATH_MSG_VERBOSE(x)
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool const RAWDATA *ch2 const
std::unique_ptr< const Trk::TrackParameters > addNoise(const SiNoise_bt &, const Trk::TrackParameters &, int) const
Add material effects
virtual const InDetDD::TRT_BaseElement * detectorElement() const override final
returns the detector element, assoicated with the PRD of this class
DoubleProperty m_phiWidth
#define AmgSymMatrix(dim)
std::atomic< int > padding
unsigned int numberOfMeasurementBases() const
Return the number of contained Trk::MeasurementBase (s)
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
TrackParameters_v1 TrackParameters
DoubleProperty m_xi2maxlink
ToolHandle< Trk::IUpdator > m_updatorTool
virtual void setOwner(IDataHandleHolder *o)=0
Class to handle pseudo-measurements in fitters and on track objects.
@ FastField
call the fast field access method of the FieldSvc
DoubleProperty m_xi2max
Track quality cuts to be passed to the combinatorial track finder.
const_iterator lowerPhiBound(float phi, float roi_phi_width) const
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
virtual const Surface & associatedSurface() const override final
Interface method to get the associated Surface.
virtual InDet::SiCombinatorialTrackFinderData_xk & combinatorialData() override
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.
InDet::SiDetElementRoadMakerData_xk & roadMakerData()
IntegerProperty m_nclusmin
static bool newClusters(const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Seed used by another track?
StringProperty m_fieldmode
Protected Data
InDet::TrackQualityCuts m_trackquality
ToolHandle< InDet::ITRT_SeededSpacePointFinder > m_seedmaker
static std::unique_ptr< const Trk::TrackParameters > modifyTrackParameters(const Trk::TrackParameters &, int)
Modify track parameters if brem correction
const MeasurementBase * measurement(unsigned int) const
returns the Trk::MeasurementBase objects depending on the integer
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
SG::ReadHandleKey< ROIPhiRZContainer > m_caloClusterROIKey
std::list< Trk::Track * > cleanTrack(std::list< Trk::Track * >) const
Eliminate spurious Pixel clusters in track
virtual Identifier identify() const override final
identifier of this detector element:
InDet::ITRT_SeededSpacePointFinder::IEventData & spacePointFinderEventData()
const Surface & associatedSurface() const override final
returns the surface for the local to global transformation
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
void setDoubleCut(const std::string &, double)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
std::multimap< const Trk::PrepRawData *, const Trk::Track * > & clusterTrack()
IntegerProperty m_nwclusmin
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...
bool solenoidOn() const
status of the magnets
@ FullField
Field is set to be realistic, but within a given Volume.
const Amg::MatrixX & localCovariance() const
Interface method to get the localError.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
@ NoField
Field is set to 0., 0., 0.,.
IntegerProperty m_dholesmax
Ensure that the ATLAS eigen extensions are properly loaded.
void setTrackQualityCuts()
Set the track quality cuts for combinatorial track finding
static void clusterTrackMap(Trk::Track *, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Map PRDs-tracks.
StatusCode initialize(bool used=true)
void magneticFieldInit()
Private Methods
Eigen::Matrix< double, 3, 1 > Vector3D
MagneticFieldMode magneticFieldMode() const
Returns the MagneticFieldMode as specified.
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
const LocalParameters & localParameters() const
Interface method to get the LocalParameters.
const TRT_ID * m_trtId
ID TRT helper.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const DataVector< const MeasurementBase > * measurementsOnTrack() const
return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).
const Amg::Vector3D & momentum() const
Access method for the momentum.
const Amg::Vector3D & globalPosition() const
return global position reference
#define ATH_MSG_WARNING(x)
InDet::SiNoise_bt & noise()
const boost::regex re(r_e)
ToolHandle< InDet::ISiCombinatorialTrackFinder > m_tracksfinder
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
static EventData & getPrivateEventData(InDet::ITRT_SeededTrackFinder::IEventData &virt_event_data)
static bool newSeed(const std::vector< const Trk::SpacePoint * > &, InDet::TRT_SeededTrackFinder_ATL::EventData &event_data)
Seed SPs used by other high quality tracks?
MsgStream & dumpconditions(MsgStream &out) const
virtual const Amg::Vector3D & globalPosition() const override final
return the global position of this RIO_OnTrack
DoubleProperty m_outlierCut
void production(int direction, int model, const Trk::TrackParameters &tp)
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
constexpr virtual SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
ToolHandle< Trk::IPropagator > m_proptool
double chiSquared() const
returns the of the overall track fit
@ 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.
BooleanProperty m_bremCorrect