ATLAS Offline Software
List of all members
InDet::SiTrackMaker_xk Class Referencefinal

#include <SiTrackMaker_xk.h>

Inheritance diagram for InDet::SiTrackMaker_xk:
Collaboration diagram for InDet::SiTrackMaker_xk:

Public Member Functions

Standard tool methods
 SiTrackMaker_xk (const std::string &, const std::string &, const IInterface *)
 
virtual ~SiTrackMaker_xk ()=default
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
Main methods for local track finding
virtual std::list< Trk::Track * > getTracks (const EventContext &ctx, SiTrackMakerEventData_xk &data, const std::vector< const Trk::SpacePoint * > &Sp) const override
 
virtual std::list< Trk::Track * > getTracks (const EventContext &ctx, SiTrackMakerEventData_xk &data, const Trk::TrackParameters &Tp, const std::vector< Amg::Vector3D > &Gp) const override
 
virtual void newEvent (const EventContext &ctx, SiTrackMakerEventData_xk &data, bool PIX, bool SCT) const override
 
virtual void newTrigEvent (const EventContext &ctx, SiTrackMakerEventData_xk &data, bool PIX, bool SCT) const override
 
virtual void endEvent (SiTrackMakerEventData_xk &data) const override
 
Print internal tool parameters and status
MsgStream & dump (SiTrackMakerEventData_xk &data, MsgStream &out) const override
 

Private Member Functions

Disallow default constructor, copy constructor and assignment operator
 SiTrackMaker_xk ()=delete
 
 SiTrackMaker_xk (const SiTrackMaker_xk &)=delete
 
SiTrackMaker_xkoperator= (const SiTrackMaker_xk &)=delete
 

Private Attributes

Tool handles
ToolHandle< InDet::ISiDetElementsRoadMakerm_roadmaker {this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"}
 
ToolHandle< InDet::ISiCombinatorialTrackFinderm_tracksfinder {this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"}
 
ToolHandle< ITrigInDetTrackFollowingToolm_trigInDetTrackFollowingTool {this, "TrigTrackFollowingTool", "TrigInDetTrackFollowingTool"}
 
ToolHandle< ITrigInDetRoadPredictorToolm_trigInDetRoadPredictorTool {this, "TrigInDetRoadPredictorTool", "TrigInDetRoadPredictorTool_FTF"}
 
ToolHandle< InDet::ISeedToTrackConversionToolm_seedtrack {this, "SeedToTrackConversion", "InDet::SeedToTrackConversionTool"}
 
Data handles
SG::ReadCondHandleKey< InDet::BeamSpotDatam_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"}
 
SG::ReadCondHandleKey< AtlasFieldCacheCondObjm_fieldCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
 
SG::ReadHandleKey< ROIPhiRZContainerm_caloCluster {this, "EMROIPhiRZContainer", ""}
 
SG::ReadHandleKey< ROIPhiRZContainerm_caloHad {this, "HadROIPhiRZContainer", ""}
 
Properties
BooleanProperty m_seedsfilter {this, "UseSeedFilter", true, "Use seed filter"}
 
StringProperty m_fieldmode {this, "MagneticFieldMode", "MapSolenoid", "Mode of magnetic field"}
 
StringProperty m_patternName {this, "TrackPatternRecoInfo", "SiSPSeededFinder", "Name of the pattern recognition"}
 
BooleanProperty m_usePix {this, "usePixel", true, "flags to set whether to use pixel/sct cluster, irrespective of what is in event"}
 
BooleanProperty m_useSct {this, "useSCT", true}
 
BooleanProperty m_useassoTool {this, "UseAssociationTool", false, "Use prd-track association tool"}
 
BooleanProperty m_cosmicTrack {this, "CosmicTrack", false, "Is it cosmic track"}
 
BooleanProperty m_multitracks {this, "doMultiTracksProd", false}
 
BooleanProperty m_useBremModel {this, "useBremModel", false}
 
BooleanProperty m_useCaloSeeds {this, "doCaloSeededBrem", false}
 
BooleanProperty m_useSSSfilter {this, "useSSSseedsFilter", true}
 
BooleanProperty m_useHClusSeed {this, "doHadCaloSeedSSS", false, "Hadronic Calorimeter Seeds"}
 
BooleanProperty m_ITKGeometry {this, "ITKGeometry", false, "ITK geometry"}
 
BooleanProperty m_seedsegmentsWrite {this, "SeedSegmentsWrite", false, "Call seed to track conversion"}
 
BooleanProperty m_useTrigTrackFollowingTool {this, "useTrigTrackFollowingTool", false, "Option to use TrigInDetTrackFollowingTool instead of SiCombinatorialTrackFinder_xk"}
 
BooleanProperty m_useTrigInDetRoadPredictorTool {this, "useTrigInDetRoadPredictorTool", false, "Option to use TrigInDetRoadPredictorTool instead of ISiDetElementsRoadMaker"}
 
BooleanProperty m_LRTmode {this, "LRTMode", false}
 
DoubleProperty m_xi2max {this, "Xi2max", 15., "max Xi2 for updators"}
 
DoubleProperty m_xi2maxNoAdd {this, "Xi2maxNoAdd", 35., "max Xi2 for clusters"}
 
DoubleProperty m_xi2maxlink {this, "Xi2maxlink", 200., "max Xi2 for clusters"}
 
DoubleProperty m_pTmin {this, "pTmin", 500., "min pT"}
 
DoubleProperty m_pTminBrem {this, "pTminBrem", 1000., "min pT for Brem mode"}
 
DoubleProperty m_distmax {this, "MaxDistanceForSCTsp", 5.}
 
DoubleProperty m_xi2multitracks {this, "Xi2maxMultiTracks", 3., "max Xi2 for multi tracks"}
 
IntegerProperty m_nholesmax {this, "nHolesMax", 2, "Max number holes"}
 
IntegerProperty m_dholesmax {this, "nHolesGapMax", 2, "Max holes gap"}
 
IntegerProperty m_nclusmin {this, "nClustersMin", 6, "Min number clusters"}
 
IntegerProperty m_nwclusmin {this, "nWeightedClustersMin", 6, "Min umber weighted clusters(pix=2 sct=1)"}
 
IntegerProperty m_trackletPoints {this, "trackletPoints", 1, "Select which tracklet points to use"}
 
DoubleProperty m_phiWidth {this, "phiWidth", 0.3}
 
DoubleProperty m_etaWidth {this, "etaWidth", 0.3}
 
DoubleArrayProperty m_etabins {this, "etaBins", {}, "eta bins"}
 
DoubleArrayProperty m_ptbins {this, "pTBins", {}, "pT bins"}
 

Data members, which are updated only in initialize method

enum  statAllTypes {
  kTotalInputSeeds, kTotalUsedSeeds, kTotalNoTrackPar, kTotalBremSeeds,
  kTwoClusters, kWrongInit, kWrongRoad, kNoTrack,
  kNotNewTrack, kBremAttempt, kOutputTracks, kExtraTracks,
  kBremTracks, kDESize, kSeedsWithTracks
}
 
enum  kNStatEtaTypes { kUsedSeedsEta, kSeedsWithTracksEta }
 
Trk::TrackInfo m_trackinfo
 
bool m_heavyion {false}
 
Trk::MagneticFieldMode m_fieldModeEnum {Trk::FullField}
 
std::mutex m_counterMutex
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_totalInputSeeds ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_totalUsedSeeds ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_totalNoTrackPar ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_totalBremSeeds ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_twoClusters ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_wrongRoad ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_wrongInit ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_noTrack ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_notNewTrack ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_bremAttempt ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_outputTracks ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_extraTracks ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_bremTracks ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< int >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_seedsWithTrack ATLAS_THREAD_SAFE {}
 
std::array< std::atomic< double >, SiCombinatorialTrackFinderData_xk::kNSeedTypes > m_deSize ATLAS_THREAD_SAFE {}
 
std::vector< std::vector< double > > m_usedSeedsEta ATLAS_THREAD_SAFE
 
std::vector< std::vector< double > > m_seedsWithTracksEta ATLAS_THREAD_SAFE
 
std::vector< statAllTypesm_indexToEnum {kTwoClusters,kWrongInit,kWrongRoad,kNoTrack,kNotNewTrack,kBremAttempt}
 
std::unique_ptr< Trk::TrackParametersgetAtaPlane (MagField::AtlasFieldCache &fieldCache, SiTrackMakerEventData_xk &data, bool sss, const std::vector< const Trk::SpacePoint * > &SP, const EventContext &ctx) const
 
bool globalPositions (const Trk::SpacePoint &s0, const Trk::SpacePoint &s1, const Trk::SpacePoint &s2, double *p0, double *p1, double *p2) const
 
bool globalPosition (const Trk::SpacePoint &sp, const double *dir, double *p) const
 This is a refinement of the global position for strip space-points. More...
 
InDet::TrackQualityCuts setTrackQualityCuts (bool simpleTrack) const
 
bool newSeed (SiTrackMakerEventData_xk &data, const std::vector< const Trk::SpacePoint * > &Sp) const
 
bool isCaloCompatible (SiTrackMakerEventData_xk &data) const
 
bool isHadCaloCompatible (SiTrackMakerEventData_xk &data) const
 
double pTmin (double eta) const
 
MsgStream & dumpStatistics (MsgStream &out) const
 
MsgStream & dumpconditions (MsgStream &out) const
 
template<typename T , size_t N, size_t M>
void resetCounter (std::array< std::array< T, M >, N > &a) const
 helper for working with the stat arrays More...
 
template<typename T , size_t N>
void resetCounter (std::array< T, N > &a) const
 
static void globalDirections (const double *p0, const double *p1, const double *p2, double *d0, double *d1, double *d2)
 Here, we derive the local track direction in the space-points as the tangents to the estimated trajectory (assuming a circle in x-y and straight line in r-z) More...
 
static void detectorElementsSelection (SiTrackMakerEventData_xk &data, std::vector< const InDetDD::SiDetectorElement * > &DE)
 
static int kindSeed (const std::vector< const Trk::SpacePoint * > &Sp)
 
static int rapidity (const std::vector< const Trk::SpacePoint * > &Sp)
 
static bool isNewTrack (SiTrackMakerEventData_xk &data, Trk::Track *Tr)
 
static void clusterTrackMap (SiTrackMakerEventData_xk &data, Trk::Track *Tr)
 
static MsgStream & dumpevent (SiTrackMakerEventData_xk &data, MsgStream &out)
 

Detailed Description

InDet::SiTrackMaker_xk is algorithm which produce Trk::Track started from 3 space points information of SCT and Pixels in the road of InDetDD::SiDetectorElement* sorted in propagation order.

In AthenaMT, event dependent cache inside SiTrackMaker_xk is not preferred. SiTrackMakerEventData_xk class holds event dependent data for SiTrackMaker_xk. Its object is instantiated in SiSPSeededTrackFinder::execute.

Author
Igor..nosp@m.Gavr.nosp@m.ilenk.nosp@m.o@ce.nosp@m.rn.ch

Definition at line 63 of file SiTrackMaker_xk.h.

Member Enumeration Documentation

◆ kNStatEtaTypes

Enumerator
kUsedSeedsEta 
kSeedsWithTracksEta 

Definition at line 223 of file SiTrackMaker_xk.h.

223  {
226  };

◆ statAllTypes

Enumerator
kTotalInputSeeds 
kTotalUsedSeeds 
kTotalNoTrackPar 
kTotalBremSeeds 
kTwoClusters 
kWrongInit 
kWrongRoad 
kNoTrack 
kNotNewTrack 
kBremAttempt 
kOutputTracks 
kExtraTracks 
kBremTracks 
kDESize 
kSeedsWithTracks 

Definition at line 205 of file SiTrackMaker_xk.h.

205  {
210  kTwoClusters,
211  kWrongInit,
212  kWrongRoad,
213  kNoTrack,
214  kNotNewTrack,
215  kBremAttempt,
217  kExtraTracks,
218  kBremTracks,
219  kDESize,
221  };

Constructor & Destructor Documentation

◆ SiTrackMaker_xk() [1/3]

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

Definition at line 27 of file SiTrackMaker_xk.cxx.

29  : base_class(t, n, p)
30 {
31 
32 }

◆ ~SiTrackMaker_xk()

virtual InDet::SiTrackMaker_xk::~SiTrackMaker_xk ( )
virtualdefault

◆ SiTrackMaker_xk() [2/3]

InDet::SiTrackMaker_xk::SiTrackMaker_xk ( )
privatedelete

◆ SiTrackMaker_xk() [3/3]

InDet::SiTrackMaker_xk::SiTrackMaker_xk ( const SiTrackMaker_xk )
privatedelete

Member Function Documentation

◆ clusterTrackMap()

void InDet::SiTrackMaker_xk::clusterTrackMap ( SiTrackMakerEventData_xk data,
Trk::Track Tr 
)
staticprivate

Definition at line 1188 of file SiTrackMaker_xk.cxx.

1189 {
1191  m = Tr->measurementsOnTrack()->begin(),
1192  me = Tr->measurementsOnTrack()->end ();
1193 
1194  for (; m!=me; ++m) {
1195  const Trk::PrepRawData* prd = static_cast<const Trk::RIO_OnTrack*>(*m)->prepRawData();
1196  if (prd) data.clusterTrack().insert(std::make_pair(prd, Tr));
1197  }
1198 }

◆ detectorElementsSelection()

void InDet::SiTrackMaker_xk::detectorElementsSelection ( SiTrackMakerEventData_xk data,
std::vector< const InDetDD::SiDetectorElement * > &  DE 
)
staticprivate

Definition at line 1065 of file SiTrackMaker_xk.cxx.

1067 {
1069  while (d!=DE.end()) {
1070  if ((*d)->isPixel()) {
1071  if (!data.pix()) {
1072  d = DE.erase(d);
1073  continue;
1074  }
1075  } else if (!data.sct()) {
1076  d = DE.erase(d);
1077  continue;
1078  }
1079  ++d;
1080  }
1081 }

◆ dump()

MsgStream & InDet::SiTrackMaker_xk::dump ( SiTrackMakerEventData_xk data,
MsgStream &  out 
) const
override

Definition at line 394 of file SiTrackMaker_xk.cxx.

395 {
396  out<<std::endl;
397  if (data.nprint()) return dumpevent(data, out);
398  return dumpconditions(out);
399 }

◆ dumpconditions()

MsgStream & InDet::SiTrackMaker_xk::dumpconditions ( MsgStream &  out) const
private

Definition at line 405 of file SiTrackMaker_xk.cxx.

406 {
407 
408  int n = 62-m_tracksfinder.type().size();
409  std::string s4; for (int i=0; i<n; ++i) s4.append(" "); s4.append("|");
410 
411  std::string fieldmode[9] ={"NoField" ,"ConstantField","SolenoidalField",
412  "ToroidalField" ,"Grid3DField" ,"RealisticField" ,
413  "UndefinedField","AthenaField" , "?????" };
414 
416 
417  // Get AtlasFieldCache
419  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
420  if (fieldCondObj) {
421  MagField::AtlasFieldCache fieldCache;
422  fieldCondObj->getInitializedCache(fieldCache);
423  if (!fieldCache.solenoidOn()) fieldModeEnum = Trk::NoField;
424  }
425 
426  Trk::MagneticFieldProperties fieldprop(fieldModeEnum);
427  int mode = fieldprop.magneticFieldMode();
428  if (mode<0 || mode>8 ) mode = 8;
429 
430  n = 62-fieldmode[mode].size();
431  std::string s3; for (int i=0; i<n; ++i) s3.append(" "); s3.append("|");
432 
433  n = 62-m_roadmaker.type().size();
434  std::string s6; for (int i=0; i<n; ++i) s6.append(" "); s6.append("|");
435 
436  out<<"|----------------------------------------------------------------------"
437  <<"-------------------|"
438  <<std::endl;
439  out<<"| Tool for road builder | "<<m_roadmaker .type() <<s6<<std::endl;
440  out<<"} Tool for track finding | "<<m_tracksfinder.type()<<s4<<std::endl;
441  out<<"| Use association tool ? | "
442  <<std::setw(12)<<m_useassoTool
443  << std::endl;
444  out<<"| Magnetic field mode | "<<fieldmode[mode] <<s3<<std::endl;
445  out<<"| Use seeds filter ? | "<<std::setw(12)<<m_seedsfilter
446  <<" |"<<std::endl;
447  out<<"| Min pT of track (MeV) | "<<std::setw(12)<<std::setprecision(5)<<m_pTmin
448  <<" |"<<std::endl;
449  out<<"| Max Xi2 for cluster | "<<std::setw(12)<<std::setprecision(5)<<m_xi2max
450  <<" |"<<std::endl;
451  out<<"| Max Xi2 for outlayer | "<<std::setw(12)<<std::setprecision(5)<<m_xi2maxNoAdd
452  <<" |"<<std::endl;
453  out<<"| Max Xi2 for link | "<<std::setw(12)<<std::setprecision(5)<<m_xi2maxlink
454  <<" |"<<std::endl;
455  out<<"| Min number of clusters | "<<std::setw(12)<<m_nclusmin
456  <<" |"<<std::endl;
457  out<<"| Min number of wclusters | "<<std::setw(12)<<m_nwclusmin
458  <<" |"<<std::endl;
459  out<<"| Max number holes | "<<std::setw(12)<<m_nholesmax
460  <<" |"<<std::endl;
461  out<<"| Max holes gap | "<<std::setw(12)<<m_dholesmax
462  <<" |"<<std::endl;
463  out<<"|----------------------------------------------------------------------"
464  <<"-------------------|"
465  <<std::endl;
466  return out;
467 }

◆ dumpevent()

MsgStream & InDet::SiTrackMaker_xk::dumpevent ( SiTrackMakerEventData_xk data,
MsgStream &  out 
)
staticprivate

Definition at line 474 of file SiTrackMaker_xk.cxx.

475 {
476  out<<"|---------------------------------------------------------------------|"
477  <<std::endl;
478  out<<"| Number input seeds | "<<std::setw(12)<<data.inputseeds()
479  <<" |"<<std::endl;
480  out<<"| Number good seeds | "<<std::setw(12)<<data.goodseeds()
481  <<" |"<<std::endl;
482  out<<"| Number output tracks | "<<std::setw(12)<<data.findtracks()
483  <<" |"<<std::endl;
484  out<<"|---------------------------------------------------------------------|"
485  <<std::endl;
486  return out;
487 }

◆ dumpStatistics()

MsgStream & InDet::SiTrackMaker_xk::dumpStatistics ( MsgStream &  out) const
private

Definition at line 197 of file SiTrackMaker_xk.cxx.

198 {
199 
200  out<<"|----------------------|--------------|--------------|--------------|--------------|--------------|"
201  <<std::endl;
202  out<<"| Kind of seed | PPP | PPS | PSS | SSS | ALL |"
203  <<std::endl;
204  out<<"|----------------------|--------------|--------------|--------------|--------------|--------------|"
205  <<std::endl;
206  out<<"| Input seeds | "
207  <<std::setw(12)<<m_totalInputSeeds[0]<<" | "
208  <<std::setw(12)<<m_totalInputSeeds[1]<<" | "
209  <<std::setw(12)<<m_totalInputSeeds[2]<<" | "
210  <<std::setw(12)<<m_totalInputSeeds[3]<<" | "
211  <<std::setw(12)<<(m_totalInputSeeds[0]+m_totalInputSeeds[1]+m_totalInputSeeds[2]+m_totalInputSeeds[3])
212  <<" |"<<std::endl;
213 
214  out<<"| No track parameters | "
215  <<std::setw(12)<<m_totalNoTrackPar[0]<<" | "
216  <<std::setw(12)<<m_totalNoTrackPar[1]<<" | "
217  <<std::setw(12)<<m_totalNoTrackPar[2]<<" | "
218  <<std::setw(12)<<m_totalNoTrackPar[3]<<" | "
219  <<std::setw(12)<<(m_totalNoTrackPar[0]+m_totalNoTrackPar[1]+ m_totalNoTrackPar[2]+m_totalNoTrackPar[3])
220  <<" |"<<std::endl;
221 
222  out<<"| Used seeds | "
223  <<std::setw(12)<<m_totalUsedSeeds[0]<<" | "
224  <<std::setw(12)<<m_totalUsedSeeds[1]<<" | "
225  <<std::setw(12)<<m_totalUsedSeeds[2]<<" | "
226  <<std::setw(12)<<m_totalUsedSeeds[3]<<" | "
227  <<std::setw(12)<<(m_totalUsedSeeds[0]+m_totalUsedSeeds[1]+ m_totalUsedSeeds[2]+m_totalUsedSeeds[3])
228  <<" |"<<std::endl;
229 
230  out<<"| Used seeds brem | "
231  <<std::setw(12)<<m_totalBremSeeds[0]<<" | "
232  <<std::setw(12)<<m_totalBremSeeds[1]<<" | "
233  <<std::setw(12)<<m_totalBremSeeds[2]<<" | "
234  <<std::setw(12)<<m_totalBremSeeds[3]<<" | "
235  <<std::setw(12)<<(m_totalBremSeeds[0]+m_totalBremSeeds[1]+m_totalBremSeeds[2]+m_totalBremSeeds[3])
236  <<" |"<<std::endl;
237 
238  double tdetsize = 0.;
239  int goodseed = 0;
241  tdetsize+= m_deSize[i];
242  goodseed+= m_totalUsedSeeds[i];
243  if(m_totalUsedSeeds[i] > 0.) m_deSize[i]= m_deSize[i]/m_totalUsedSeeds[i];
244  }
245  if(goodseed > 0) tdetsize/=double(goodseed);
246 
247  out<<"| Det elements in road | "
248  <<std::setw(12)<<std::setprecision(4)<<m_deSize[0]<<" | "
249  <<std::setw(12)<<std::setprecision(5)<<m_deSize[1]<<" | "
250  <<std::setw(12)<<std::setprecision(5)<<m_deSize[2]<<" | "
251  <<std::setw(12)<<std::setprecision(5)<<m_deSize[3]<<" | "
252  <<std::setw(12)<<std::setprecision(5)<<tdetsize
253  <<" |"<<std::endl;
254 
255 
256  out<<"| Two clusters on DE | "
257  <<std::setw(12)<<m_twoClusters[0]<<" | "
258  <<std::setw(12)<<m_twoClusters[1]<<" | "
259  <<std::setw(12)<<m_twoClusters[2]<<" | "
260  <<std::setw(12)<<m_twoClusters[3]<<" | "
261  <<std::setw(12)<<(m_twoClusters[0]+m_twoClusters[1]+m_twoClusters[2]+m_twoClusters[3])
262  <<" |"<<std::endl;
263 
264  out<<"| Wrong DE road | "
265  <<std::setw(12)<<m_wrongRoad[0]<<" | "
266  <<std::setw(12)<<m_wrongRoad[1]<<" | "
267  <<std::setw(12)<<m_wrongRoad[2]<<" | "
268  <<std::setw(12)<<m_wrongRoad[3]<<" | "
269  <<std::setw(12)<<(m_wrongRoad[0]+m_wrongRoad[1]+m_wrongRoad[2]+m_wrongRoad[3])
270  <<" |"<<std::endl;
271 
272  out<<"| Wrong initialization | "
273  <<std::setw(12)<<m_wrongInit[0]<<" | "
274  <<std::setw(12)<<m_wrongInit[1]<<" | "
275  <<std::setw(12)<<m_wrongInit[2]<<" | "
276  <<std::setw(12)<<m_wrongInit[3]<<" | "
277  <<std::setw(12)<<(m_wrongInit[0]+m_wrongInit[1]+m_wrongInit[2]+m_wrongInit[3])
278  <<" |"<<std::endl;
279 
280  out<<"| Can not find track | "
281  <<std::setw(12)<<m_noTrack[0]<<" | "
282  <<std::setw(12)<<m_noTrack[1]<<" | "
283  <<std::setw(12)<<m_noTrack[2]<<" | "
284  <<std::setw(12)<<m_noTrack[3]<<" | "
285  <<std::setw(12)<<(m_noTrack[0]+m_noTrack[1]+m_noTrack[2]+m_noTrack[3])
286  <<" |"<<std::endl;
287 
288  out<<"| It is not new track | "
289  <<std::setw(12)<<m_notNewTrack[0]<<" | "
290  <<std::setw(12)<<m_notNewTrack[1]<<" | "
291  <<std::setw(12)<<m_notNewTrack[2]<<" | "
292  <<std::setw(12)<<m_notNewTrack[3]<<" | "
293  <<std::setw(12)<<(m_notNewTrack[0]+m_notNewTrack[1]+m_notNewTrack[2]+m_notNewTrack[3])
294  <<" |"<<std::endl;
295 
296  out<<"| Attempts brem model | "
297  <<std::setw(12)<<m_bremAttempt[0]<<" | "
298  <<std::setw(12)<<m_bremAttempt[1]<<" | "
299  <<std::setw(12)<<m_bremAttempt[2]<<" | "
300  <<std::setw(12)<<m_bremAttempt[3]<<" | "
301  <<std::setw(12)<<(m_bremAttempt[0]+m_bremAttempt[1]+m_bremAttempt[2]+m_bremAttempt[3])
302  <<" |"<<std::endl;
303 
304  out<<"| Output tracks | "
305  <<std::setw(12)<<m_outputTracks[0]<<" | "
306  <<std::setw(12)<<m_outputTracks[1]<<" | "
307  <<std::setw(12)<<m_outputTracks[2]<<" | "
308  <<std::setw(12)<<m_outputTracks[3]<<" | "
309  <<std::setw(12)<<(m_outputTracks[0]+m_outputTracks[1]+m_outputTracks[2]+m_outputTracks[3])
310  <<" |"<<std::endl;
311 
312  out<<"| Output extra tracks | "
313  <<std::setw(12)<<m_extraTracks[0]<<" | "
314  <<std::setw(12)<<m_extraTracks[1]<<" | "
315  <<std::setw(12)<<m_extraTracks[2]<<" | "
316  <<std::setw(12)<<m_extraTracks[3]<<" | "
317  <<std::setw(12)<<(m_extraTracks[0]+m_extraTracks[1]+m_extraTracks[2]+m_extraTracks[3])
318  <<" |"<<std::endl;
319 
320  out<<"| Output tracks brem | "
321  <<std::setw(12)<<m_bremTracks[0]<<" | "
322  <<std::setw(12)<<m_bremTracks[1]<<" | "
323  <<std::setw(12)<<m_bremTracks[2]<<" | "
324  <<std::setw(12)<<m_bremTracks[3]<<" | "
325  <<std::setw(12)<<(m_bremTracks[0]+m_bremTracks[1]+m_bremTracks[2]+m_bremTracks[3])
326  <<" |"<<std::endl;
327 
328  out<<"|----------------------|--------------|--------------|--------------|--------------|--------------|--------------|"
329  <<std::endl;
330  out<<"| Seeds with track | "
331  <<std::setw(12)<<m_seedsWithTrack[0]<<" | "
332  <<std::setw(12)<<m_seedsWithTrack[1]<<" | "
333  <<std::setw(12)<<m_seedsWithTrack[2]<<" | "
334  <<std::setw(12)<<m_seedsWithTrack[3]<<" | "
335  <<std::setw(12)<<(m_seedsWithTrack[0]+m_seedsWithTrack[1]+m_seedsWithTrack[2]+m_seedsWithTrack[3])
336  <<" | Number seeds |"<<std::endl;
337  out<<"|----------------------|--------------|--------------|--------------|--------------|--------------|--------------|"
338  <<std::endl;
339 
340  std::vector<std::pair<int,std::string>> rapidityTablePrint;
341  //Defining the range values to be printed
342  rapidityTablePrint.emplace_back(0,std::string("| Track/Used 0.0-0.5 | "));
343  rapidityTablePrint.emplace_back(1,std::string("| 0.5-1.0 | "));
344  rapidityTablePrint.emplace_back(2,std::string("| 1.0-1.5 | "));
345  rapidityTablePrint.emplace_back(3,std::string("| 1.5-2.0 | "));
346  rapidityTablePrint.emplace_back(4,std::string("| 2.0-2.5 | "));
347  rapidityTablePrint.emplace_back(5,std::string("| 2.5-3.0 | "));
348  rapidityTablePrint.emplace_back(6,std::string("| 3.0-3.5 | "));
349  rapidityTablePrint.emplace_back(7,std::string("| 3.5-4.0 | "));
350 
351 
353 
354  std::array<double,SiCombinatorialTrackFinderData_xk::kNSeedTypes+1> pu{};
355  pu.fill(0);
356 
357  double totalUsedSeedsEta = 0.;
358 
359  for(int j = 0; j != SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++j){
360 
361  if(m_usedSeedsEta[j][i]!=0.) pu[j]=m_seedsWithTracksEta[j][i]/m_usedSeedsEta[j][i];
362  totalUsedSeedsEta += m_usedSeedsEta[j][i];
363 
364  }
365 
366  if(totalUsedSeedsEta!=0.) {
367 
368  for(int j = 0; j != SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++j){
369 
370  pu[SiCombinatorialTrackFinderData_xk::kNSeedTypes] += m_seedsWithTracksEta[j][i];
371 
372  }
374  }
375 
376  out<<rapidityTablePrint.at(i).second;
377  out<<std::setw(12)<<std::setprecision(4)<<pu[0]<<" | "
378  <<std::setw(12)<<std::setprecision(4)<<pu[1]<<" | "
379  <<std::setw(12)<<std::setprecision(4)<<pu[2]<<" | "
380  <<std::setw(12)<<std::setprecision(4)<<pu[3]<<" | "
381  <<std::setw(12)<<std::setprecision(4)<<pu[4]<<" | "
382  <<std::setw(12)<<static_cast<int>(m_seedsWithTracksEta[0][i])+static_cast<int>(m_seedsWithTracksEta[1][i])+static_cast<int>(m_seedsWithTracksEta[2][i])+static_cast<int>(m_seedsWithTracksEta[3][i])
383  <<" |"<<std::endl;
384  }
385 
386 
387  out<<"|----------------------|--------------|--------------|--------------|--------------|--------------|--------------|"
388  <<std::endl;
389 
390  return out;
391 
392 }

◆ endEvent()

void InDet::SiTrackMaker_xk::endEvent ( SiTrackMakerEventData_xk data) const
overridevirtual

End event for track finder tool

correction to exclude memory fragmentation

Definition at line 587 of file SiTrackMaker_xk.cxx.

588 {
590  m_tracksfinder->endEvent(data.combinatorialData());
591 
593  data.clusterTrack().clear();
594 
595  // end event for seed to track tool
596  if (m_seedsegmentsWrite) m_seedtrack->endEvent(data.conversionData());
597 
598  // fill statistics
599  {
600  std::lock_guard<std::mutex> lock(m_counterMutex);
601 
602  for(int K = 0; K != SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++K) {
603  for(int r = 0; r != 8; ++r) {
604  m_usedSeedsEta[K][r] += data.summaryStatUsedInTrack()[kUsedSeedsEta][K][r];
605  m_seedsWithTracksEta[K][r] += data.summaryStatUsedInTrack()[kSeedsWithTracksEta][K][r];
606  }
607  }
608  }
609  for (int K = 0; K != SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++K) {
610  m_totalInputSeeds[K] += data.summaryStatAll()[kTotalInputSeeds][K];
611  m_totalUsedSeeds[K] = m_totalUsedSeeds[K] + data.summaryStatAll()[kTotalUsedSeeds][K];
612  m_totalNoTrackPar[K] += data.summaryStatAll()[kTotalNoTrackPar][K];
613  m_totalBremSeeds[K] += data.summaryStatAll()[kTotalBremSeeds][K];
614  m_twoClusters[K] += data.summaryStatAll()[kTwoClusters][K];
615  m_wrongRoad[K] += data.summaryStatAll()[kWrongRoad][K];
616  m_wrongInit[K] += data.summaryStatAll()[kWrongInit][K];
617  m_noTrack[K] += data.summaryStatAll()[kNoTrack][K];
618  m_notNewTrack[K] += data.summaryStatAll()[kNotNewTrack][K];
619  m_bremAttempt[K] += data.summaryStatAll()[kBremAttempt][K];
620  m_outputTracks[K] += data.summaryStatAll()[kOutputTracks][K];
621  m_extraTracks[K] += data.summaryStatAll()[kExtraTracks][K];
622  m_bremTracks[K] += data.summaryStatAll()[kBremTracks][K];
623  m_seedsWithTrack[K] += data.summaryStatAll()[kSeedsWithTracks][K];
624  m_deSize[K] = m_deSize[K] + data.summaryStatAll()[kDESize][K];
625  }
626  // Print event information
627  //
628  if (msgLevel()<=0) {
629  data.nprint() = 1;
630  dump(data, msg(MSG::DEBUG));
631  }
632 }

◆ finalize()

StatusCode InDet::SiTrackMaker_xk::finalize ( )
overridevirtual

Definition at line 184 of file SiTrackMaker_xk.cxx.

185 {
186  MsgStream &out = msg(MSG::INFO);
187  out << "::finalize() -- statistics:" <<std::endl;
189  out<<endmsg;
190  return AlgTool::finalize();
191 }

◆ getAtaPlane()

std::unique_ptr< Trk::TrackParameters > InDet::SiTrackMaker_xk::getAtaPlane ( MagField::AtlasFieldCache fieldCache,
SiTrackMakerEventData_xk data,
bool  sss,
const std::vector< const Trk::SpacePoint * > &  SP,
const EventContext &  ctx 
) const
private

we need at least three space points on the seed.

for tracklets we select first, middle, and last spacepoint of the seed to improve pT estimate

for tracklets we select middle, 3rd-quarter, and last spacepoint of the seed

for tracklets we select first, penultimate, and last spacepoint of the seed

for tracklets we select first, second, and third spacepoint of the seed

get the first cluster on the first hit

and use the surface from this cluster as our reference plane

write the global positions into arrays. This includes an improved position estimate for strip spacepoints. If this improvement fails, the method can return false -> then we abort

translate second and third SP w.r.t first one

distance of second SP to first in transverse plane Also happens to be u-coordinate of second SP in conformal mapping

denominator for conformal mapping

coordinate system for conformal mapping - this is local x

u-coordinate of third SP in conformal mapping

v-coordinate of third SP in conformal mapping

A,B are slope and intercept of the straight line in the u,v plane connecting the three points.

Keep in mind that v1 == 0

From inserting A into linear equation. Note that Igor sneaks in a factor two here

Curvature estimate. (2R)²=(1+A²)/b² => 1/2R = b/sqrt(1+A²) = B / sqrt(1+A²).

estimate of the track dz/dr (1/tanTheta), corrected for curvature effects

local x of the surface in the global frame

local y of the surface in the global frame

centre of the surface in the global frame

location of the first SP w.r.t centre of the surface

local x and y - project onto local axes

silently switch off field if solenoid is off

if we are not running with "no field":

get the field at our first SP

field is in kiloTesla. So here we check for more than 0.1 Tesla

phi estimate

theta estimate

inverse transverse momentum estimate

if we have low field, use a straight-line estimate

note: Now no curvature correction

no pt estimate, assume min pt

treat absence of solenoid like the low-field case

apply the pt on the initial parameter estimate, with some margin

update qoverp

qoverp from qoverpt and theta

ref point = first SP

never done in main ATLAS tracking. Would otherwise check if the seed is compatible with a hadronic ROI

now we can return the initial track parameters we built, parameterised using the ref surface. Pass a nullptr for the covariance

Definition at line 859 of file SiTrackMaker_xk.cxx.

865 {
867  if (theSeed.size() < 3) return nullptr;
868 
869  std::vector<const Trk::SpacePoint*> SP;
870 
872  if (m_trackletPoints == 1) {
873  unsigned int middleIdx = theSeed.size() == 3 ? 1 : theSeed.size()/2;
874  SP = {theSeed[0], theSeed[middleIdx], theSeed.back()};
875  }
876  // for tracklets we select last 3 spacepoints of the seed
877  else if (m_trackletPoints == 2) {
878  SP = {theSeed[theSeed.size() - 3], theSeed[theSeed.size() - 2], theSeed.back()};
879  }
881  else if (m_trackletPoints == 3) {
882  unsigned int middleIdx = theSeed.size() == 3 ? 0 : theSeed.size()/2;
883  unsigned int quarterIdx = theSeed.size() == 3 ? 1 : 3*theSeed.size()/4;
884  SP = {theSeed[middleIdx], theSeed[quarterIdx], theSeed.back()};
885  }
887  else if (m_trackletPoints == 4) {
888  SP = {theSeed[0], theSeed[theSeed.size() - 2], theSeed.back()};
889  }
891  else if (m_trackletPoints == 5) {
892  SP = {theSeed[0], theSeed[1], theSeed[2]};
893  }
894 
895 
897  const Trk::PrepRawData* cl = SP[0]->clusterList().first;
898  if (!cl) return nullptr;
900  const Trk::PlaneSurface* pla =
901  static_cast<const Trk::PlaneSurface*>(&cl->detectorElement()->surface());
902  if (!pla) return nullptr;
903 
906  double p0[3],p1[3],p2[3];
907  if (!globalPositions(*(SP[0]),*(SP[1]),*(SP[2]),p0,p1,p2)) return nullptr;
908 
910  double x0 = p0[0] ;
911  double y0 = p0[1] ;
912  double z0 = p0[2] ;
913  double x1 = p1[0]-x0;
914  double y1 = p1[1]-y0;
915  double x2 = p2[0]-x0;
916  double y2 = p2[1]-y0;
917  double z2 = p2[2]-z0;
918 
921  double u1 = 1./sqrt(x1*x1+y1*y1) ;
923  double rn = x2*x2+y2*y2 ;
924  double r2 = 1./rn ;
926  double a = x1*u1 ;
927  double b = y1*u1 ;
929  double u2 = (a*x2+b*y2)*r2 ;
931  double v2 = (a*y2-b*x2)*r2 ;
934  double A = v2/(u2-u1) ;
935  double B = 2.*(v2-A*u2) ;
936  double C = B/sqrt(1.+A*A) ;
937  double T = z2*sqrt(r2)/(1.+.04*C*C*rn);
938  if(m_ITKGeometry){
939  T = std::abs(C) > 1.e-6 ? (z2*C)/asin(C*sqrt(rn)) : z2/sqrt(rn);
940  }
941 
942  const Amg::Transform3D& Tp = pla->transform();
943 
945  double Ax[3] = {Tp(0,0),Tp(1,0),Tp(2,0)};
947  double Ay[3] = {Tp(0,1),Tp(1,1),Tp(2,1)};
949  double D [3] = {Tp(0,3),Tp(1,3),Tp(2,3)};
951  double d[3] = {x0-D[0],y0-D[1],z0-D[2]};
953  data.par()[0] = d[0]*Ax[0]+d[1]*Ax[1]+d[2]*Ax[2];
954  data.par()[1] = d[0]*Ay[0]+d[1]*Ay[1]+d[2]*Ay[2];
955 
958  if (!fieldCache.solenoidOn()) fieldModeEnum = Trk::NoField;
959 
960  Trk::MagneticFieldProperties fieldprop(fieldModeEnum);
962  if (fieldprop.magneticFieldMode() > 0) {
963 
965  double H[3],gP[3] ={x0,y0,z0};
966  fieldCache.getFieldZR(gP, H);
967 
970  if (fabs(H[2])>.0001) {
972  data.par()[2] = atan2(b+a*A,a-b*A);
974  data.par()[3] = atan2(1.,T) ;
976  data.par()[5] = -C/(300.*H[2]) ;
977  } else {
980  T = z2*sqrt(r2) ;
981  data.par()[2] = atan2(y2,x2);
982  data.par()[3] = atan2(1.,T) ;
983  data.par()[5] = m_ITKGeometry ? 0.9/m_pTmin : 1./m_pTmin ;
984  }
985  }
987  else {
988  T = z2*sqrt(r2) ;
989  data.par()[2] = atan2(y2,x2);
990  data.par()[3] = atan2(1.,T) ;
991  data.par()[5] = m_ITKGeometry ? 0.9/m_pTmin : 1./m_pTmin ;
992  }
993 
994  double pTm = pTmin(SP[0]->eta()); // all spacepoints should have approx. same eta
995 
997  if (m_ITKGeometry){
998  if(std::abs(data.par()[5])*pTm > 1) return nullptr;
999  }
1000  else if(std::abs(data.par()[5])*m_pTmin > 1.1) return nullptr;
1001 
1003  data.par()[4] = data.par()[5]/sqrt(1.+T*T);
1004  data.par()[6] = x0 ;
1005  data.par()[7] = y0 ;
1006  data.par()[8] = z0 ;
1007 
1010  if (sss && !isHadCaloCompatible(data)) return nullptr;
1011 
1014  std::unique_ptr<Trk::TrackParameters> T0 = pla->createUniqueTrackParameters(data.par()[0],
1015  data.par()[1],
1016  data.par()[2],
1017  data.par()[3],
1018  data.par()[4],
1019  std::nullopt);
1020 
1021  if(m_ITKGeometry && m_tracksfinder->pTseed(data.combinatorialData(),*T0,SP,ctx) < pTm) return nullptr;
1022  else return T0;
1023 
1024 }

◆ getTracks() [1/2]

std::list< Trk::Track * > InDet::SiTrackMaker_xk::getTracks ( const EventContext &  ctx,
SiTrackMakerEventData_xk data,
const std::vector< const Trk::SpacePoint * > &  Sp 
) const
overridevirtual

incremenet seed counter

0 or 3 typically (PPP or SSS), other numbers indicate PPS/PSS (1/2)

eta of the seed, rounded down to leading digit via int-conversion

more counter incrementation

prepare output list

if we run the SI track maker without using the Si, this becomes a trivial task...

check seed quality.

this checks if all of the clusters on the seed are already on one single existing track. If not, we consider the seed to be "good"

read the B-field cache

Get initial parameters estimation from our seed

if we failed to get the initial parameters, we bail out. Can happen in certain pathological cases (e.g. malformed strip hits), or if we would be running with calo-ROI strip seeds (we aren't)

otherwise, increment the 'good seeds' counter

Now, obtain a search road of detector elements. This is done by extrapolating our estimated starting parameters through the detector and collecting all detector elements reasonably close to the projected trajectory. This will populate the 'DE" list.

if we don't use all of pix and SCT, filter our list, erasing any that don't fit our requirements

if we did not find sufficient detector elements to fulfill the minimum cluster requirement, bail out. We will not be able to build a track satisfying the cuts.

update statistics tables - we have sufficient detector elements to have a chance of finding a track!

prepare a list of global positions

update another counter

Find possible list of tracks using space points space points information

Note: The branch below is the one taken in ATLAS default inside-out tracking for run-3

update stat tables

update the cluster-track-map to allow to filter any upcoming seeds with hits that are already taken

require sufficient free clusters on track

Definition at line 638 of file SiTrackMaker_xk.cxx.

640 {
642  ++data.inputseeds();
643 
645  int K = kindSeed(Sp);
647  int r = rapidity(Sp);
648 
650  ++data.summaryStatAll()[kTotalInputSeeds][K];
651 
653  std::list<Trk::Track*> tracks;
655  if (!data.pix() && !data.sct()) return tracks;
656 
658  bool isGoodSeed{true};
661  if (m_seedsfilter) isGoodSeed=newSeed(data, Sp);
662  if (!m_seedsegmentsWrite && !isGoodSeed) {
663  return tracks;
664  }
665 
666  // Get AtlasFieldCache
667  MagField::AtlasFieldCache fieldCache;
668 
671  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
672  if (fieldCondObj == nullptr) {
673  ATH_MSG_ERROR("InDet::SiTrackMaker_xk::getTracks: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCondObjInputKey.key());
674  return tracks;
675  }
676  fieldCondObj->getInitializedCache (fieldCache);
677 
679  std::unique_ptr<Trk::TrackParameters> Tp = nullptr;
680  Tp = getAtaPlane(fieldCache, data, false, Sp, ctx);
681  if (m_seedsegmentsWrite && Tp) {
682  m_seedtrack->executeSiSPSeedSegments(data.conversionData(), Tp.get(), isGoodSeed, Sp);
683  }
684 
685  if (m_seedsegmentsWrite && !isGoodSeed) {
686  return tracks;
687  }
691  if (!Tp) {
692  ++data.summaryStatAll()[kTotalNoTrackPar][K];
693  return tracks;
694  }
695 
697  ++data.goodseeds();
698 
703 
704  std::vector<const InDetDD::SiDetectorElement*> DE;
705 
707  if (!m_cosmicTrack) m_roadmaker->detElementsRoad(ctx, fieldCache, *Tp,Trk::alongMomentum, DE, data.roadMakerData());
708  else m_roadmaker->detElementsRoad(ctx, fieldCache, *Tp,Trk::oppositeMomentum,DE, data.roadMakerData());
709  }
710  else {
711  int road_length = m_trigInDetRoadPredictorTool->getRoad(Sp, DE, ctx);
712  if(road_length == 0) return tracks;
713  }
714 
716  if (!data.pix() || !data.sct()) detectorElementsSelection(data, DE);
717 
720  if ( static_cast<int>(DE.size()) < m_nclusmin) {
721  return tracks;
722  }
723 
725  data.summaryStatAll()[kDESize][K] += double(DE.size());
726  ++data.summaryStatAll()[kTotalUsedSeeds][K];
727 
729  std::vector<Amg::Vector3D> Gp;
730 
732  ++data.summaryStatUsedInTrack()[kUsedSeedsEta][K][r];
733 
736  if (!m_useBremModel) {
738  Trk::Track* newTrack = m_trigInDetTrackFollowingTool->getTrack(Sp, DE, ctx);
739  if(newTrack != nullptr) tracks.push_back(newTrack);
740  }
741  else {
742  tracks = m_tracksfinder->getTracks(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
743  }
744  } else if (!m_useCaloSeeds) {
745  ++data.summaryStatAll()[kTotalBremSeeds][K];
746  tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), false,ctx);
747  }
749  else if (isCaloCompatible(data)) {
750 
751  ++data.summaryStatAll()[kTotalBremSeeds][K];
752  tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(), true,ctx);
753  } else {
754  tracks = m_tracksfinder->getTracks (data.combinatorialData(), *Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
755  }
756 
758  std::array<bool,SiCombinatorialTrackFinderData_xk::kNCombStats> inf{0,0,0,0,0,0};
759  m_tracksfinder->fillStatistic(data.combinatorialData(),inf);
760  for (size_t p =0; p<inf.size(); ++p){
761  if(inf[p]) ++data.summaryStatAll()[m_indexToEnum[p]][K];
762  }
763 
766  if (m_seedsfilter) {
767  std::list<Trk::Track*>::iterator t = tracks.begin();
768  while (t!=tracks.end()) {
770  if (!isNewTrack(data, *t)) {
771  delete (*t);
772  tracks.erase(t++);
773  } else {
774  if((*t)->info().trackProperties(Trk::TrackInfo::BremFit)) ++data.summaryStatAll()[kBremTracks][K];
775  clusterTrackMap(data, *t++);
776  }
777  }
778  }
779  data.findtracks() += tracks.size();
780 
781  if(!tracks.empty()) {
782  ++data.summaryStatAll()[kSeedsWithTracks][K];
783  ++data.summaryStatUsedInTrack()[kSeedsWithTracksEta][K][r];
784  data.summaryStatAll()[kOutputTracks][K] += tracks.size();
785  data.summaryStatAll()[kExtraTracks][K] += (tracks.size()-1);
786  }
787 
788  return tracks;
789 
790 }

◆ getTracks() [2/2]

std::list< Trk::Track * > InDet::SiTrackMaker_xk::getTracks ( const EventContext &  ctx,
SiTrackMakerEventData_xk data,
const Trk::TrackParameters Tp,
const std::vector< Amg::Vector3D > &  Gp 
) const
overridevirtual

Definition at line 796 of file SiTrackMaker_xk.cxx.

798 {
799  ++data.inputseeds();
800  std::list<Trk::Track*> tracks;
801  if (!data.pix() && !data.sct()) return tracks;
802 
803  ++data.goodseeds();
804 
805  // Get AtlasFieldCache
806  MagField::AtlasFieldCache fieldCache;
807 
809  const AtlasFieldCacheCondObj* fieldCondObj{*readHandle};
810  if (fieldCondObj == nullptr) {
811  ATH_MSG_ERROR("InDet::SiTrackMaker_xk::getTracks: Failed to retrieve AtlasFieldCacheCondObj with key " << m_fieldCondObjInputKey.key());
812  return tracks;
813  }
814  fieldCondObj->getInitializedCache (fieldCache);
815 
816  // Get detector elements road
817  //
818  std::vector<const InDetDD::SiDetectorElement*> DE;
819  if (!m_cosmicTrack) m_roadmaker->detElementsRoad(ctx, fieldCache, Tp,Trk::alongMomentum, DE, data.roadMakerData());
820  else m_roadmaker->detElementsRoad(ctx, fieldCache, Tp,Trk::oppositeMomentum,DE, data.roadMakerData());
821 
822  if (!data.pix() || !data.sct()) detectorElementsSelection(data, DE);
823 
824  if (static_cast<int>(DE.size()) < m_nclusmin) return tracks;
825 
826  // Find possible list of tracks with trigger track parameters or global positions
827  //
828  std::vector<const Trk::SpacePoint*> Sp;
829 
830  if (!m_useBremModel) {
831  tracks = m_tracksfinder->getTracks (data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
832  } else if (!m_useCaloSeeds) {
833  tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(), false,ctx);
834  } else if (isCaloCompatible(data)) {
835  tracks = m_tracksfinder->getTracksWithBrem(data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(), true,ctx);
836  } else {
837  tracks = m_tracksfinder->getTracks (data.combinatorialData(), Tp, Sp, Gp, DE, data.clusterTrack(),ctx);
838  }
839 
840  if (m_seedsfilter) {
841  std::list<Trk::Track*>::iterator t = tracks.begin();
842  while (t!=tracks.end()) {
843  if (!isNewTrack(data, *t)) {
844  delete (*t);
845  tracks.erase(t++);
846  } else {
847  clusterTrackMap(data, *t++);
848  }
849  }
850  }
851  data.findtracks() += tracks.size();
852  return tracks;
853 }

◆ globalDirections()

void InDet::SiTrackMaker_xk::globalDirections ( const double *  p0,
const double *  p1,
const double *  p2,
double *  d0,
double *  d1,
double *  d2 
)
staticprivate

Here, we derive the local track direction in the space-points as the tangents to the estimated trajectory (assuming a circle in x-y and straight line in r-z)

transform transverse coordinates relative to the first SP

Now apply the same transform used in the seed maker: x,y --> u:=x/(x²+y²); v:=y/(x²+y²); in a frame centered around first SP

set x axis as direction unit vector in transverse plane, from first to second SP

reasoning: u = sqrt(d01)/d01, and v01 = 0

decompose the SP3-SP1 separation into components parallel...

and orthogonal to our new local x axis

squared distance third to first SP the transverse plane

u,v coordinates of third SP in the new frame

Now obtain A,B parameters from circle parameterisation in the new frame: V = (-x0/y0) x U + 1/(2y0) =: A x U + B. A ~= delta V / delta U, B = V - A x U, add a factor 2 for utility

v01 is 0, as the direction from SP 1 to 2 is the u-axis

Now we can resolve the related geometry. Note that A0, in the original frame, is related to the angle Phi1 between the tangent the central SP and the tendon between the first and second SP, alpha, as tan(alpha) = A0.

dz/dr along the seed = 1 / tan(theta)

1/sqrt(1+1/tan²(theta)) -> sin(theta)

cos theta (= sin(theta)/tan(theta))

multiply with cos(alpha) via A0

(a,b) parameterises the direction corresponding to the tendon between the first two SP. Now, go from there to the local tangents by removing or adding the angle 'alpha' from before, derived from A0. direction at first SP - rotated by - 1 x alpha w.r.t the tendon defining a and b The structure below comes from the formulae for sin / cos of a sum of two angles with (a,b) = r(cos phi / - sin phi)

px0: a sin theta cos alpha - b sin theta sin alpha

py0: b sin theta cos alpha + a sin theta sin alpha

pz0: cos theta

direction at second SP - rotated by + 1 x alpha w.r.t the tendon

px1: a sin theta cos alpha + b sin theta sin alpha

py1: b sin theta cos alpha - a sin theta sin alpha

pz1: cos theta

direction at third SP

px2: a sin theta cos alpha * C2 - b sin theta cos alpha S2

py2: b sin theta cos alpha * C2 + a sin theta cos alpha S2

Definition at line 1403 of file SiTrackMaker_xk.cxx.

1405 {
1407  double x01 = p1[0]-p0[0] ;
1408  double y01 = p1[1]-p0[1] ;
1409  double x02 = p2[0]-p0[0] ;
1410  double y02 = p2[1]-p0[1] ;
1411 
1415 
1417  double d01 = x01*x01+y01*y01 ;
1418  double x1 = sqrt(d01) ;
1419  double u01 = 1./x1 ;
1420  double a = x01*u01 ;
1421  double b = y01*u01 ;
1423  double x2 = a*x02+b*y02 ;
1425  double y2 = a*y02-b*x02 ;
1426 
1428  double d02 = x2*x2+y2*y2 ;
1430  double u02 = x2/d02 ;
1431  double v02 = y2/d02 ;
1436  double A0 = v02 /(u02-u01) ;
1437  double B0 = 2.*(v02-A0*u02) ;
1438 
1444 
1445  double C2 = (1.-B0*y2) ;
1446  double S2 = (A0+B0*x2) ;
1447 
1448  double T = (p2[2]-p0[2])/sqrt(d02);
1449  double sinTheta = 1./sqrt(1.+T*T) ;
1450  double cosTheta = sinTheta*T ;
1451  double sinThetaCosAlpha = sinTheta / sqrt(1.+A0*A0) ;
1452  double Sa = sinThetaCosAlpha*a ;
1453  double Sb = sinThetaCosAlpha*b ;
1454 
1459  d0[0] = Sa -Sb*A0;
1460  d0[1]= Sb +Sa*A0;
1461  d0[2]=cosTheta;
1462 
1464  d1[0] = Sa +Sb*A0;
1465  d1[1]= Sb -Sa*A0;
1466  d1[2]=cosTheta;
1467 
1469  d2[0] = Sa*C2-Sb*S2;
1470  d2[1]= Sb*C2+Sa*S2;
1471  d2[2]=cosTheta;
1472 }

◆ globalPosition()

bool InDet::SiTrackMaker_xk::globalPosition ( const Trk::SpacePoint sp,
const double *  dir,
double *  p 
) const
private

This is a refinement of the global position for strip space-points.

It uses the direction estimate to fix the hit position along the strip axis (non-sensitive direction).

pick up the two components of the space point

get the two ends of the strip in the global frame for each of the two clusters

get the "strip axis" in the global frame for each of the two clusters these define two planes in which the strips are sensitive

get the connection vector between the bottom ends of the two strips

divide max distance by the first strip length

Get the cross products of the direction vector and the strip axes. This gives us a normal representation of the planes containing both.

The two planes are still only defined up to a shift along the normal. Now, we fix this degree of freedom by requiring that the u-plane (perpendicular to momentum and second strip direction) should actually contain the second strip itself. To do so, we virtually 'hold' the u-plane at its intersection plane with the first strip, starting with it touching the very bottom of the first strip, and then move the intersection point along the strip. We can thus parameterise the shift by the distance we need to walk this way

Find the maximum distance we can go until we have walked past the full length of the first strip. Equivalent to the projection of the full strip length on the u-plane normal.

if no such component, bail out - no solution exists

The distance we need to walk to contain the second strip in the u-plane is is obtained by projecting the separation vector between the strip starting points onto the normal. (remember, we virtually start our shift with the u-plane intersecting the first strip at its starting point). We normalise the shifts to the maximum allowed shift.

this is playing the same game, but for shifting the v-plane w.r.t the version that intersects with the bottom of the second strip until we contain the first strip in it. du has the same length as dv (symmetry of the problem)

check that the result is valid. We want the final fixed planes to still intersect the respective other strip within some tolerance. Keep in mind that s=0 --> intersect start of strip, s == 1 --> intersect end of strip. We apply a tolerance beyond each end

now, update the position estimate as the intersection of the updated u-plane with the first strip.

Definition at line 1288 of file SiTrackMaker_xk.cxx.

1290 {
1292  const Trk::PrepRawData* c0 = sp.clusterList().first;
1293  const Trk::PrepRawData* c1 = sp.clusterList().second;
1294 
1295  const InDetDD::SiDetectorElement* de0 = static_cast<const InDet::SiCluster*>(c0)->detectorElement();
1296  const InDetDD::SiDetectorElement* de1 = static_cast<const InDet::SiCluster*>(c1)->detectorElement();
1297 
1299  Amg::Vector2D localPos = c0->localPosition();
1300  std::pair<Amg::Vector3D,Amg::Vector3D> e0
1301  (de0->endsOfStrip(InDetDD::SiLocalPosition(localPos.y(),localPos.x(),0.)));
1302 
1303  localPos = c1->localPosition();
1304  std::pair<Amg::Vector3D,Amg::Vector3D> e1
1305  (de1->endsOfStrip(InDetDD::SiLocalPosition(localPos.y(),localPos.x(),0.)));
1306 
1309  double a0[3] = {e0.second.x()-e0.first.x(), e0.second.y()-e0.first.y(), e0.second.z()-e0.first.z()};
1310  double a1[3] = {e1.second.x()-e1.first.x(), e1.second.y()-e1.first.y(), e1.second.z()-e1.first.z()};
1312  double dr[3] = {e1.first .x()-e0.first.x(), e1.first .y()-e0.first.y(), e1.first .z()-e0.first.z()};
1313 
1315  double d0 = m_distmax/sqrt(a0[0]*a0[0]+a0[1]*a0[1]+a0[2]*a0[2]);
1316 
1319  double u[3] = {a1[1]*dir[2]-a1[2]*dir[1],a1[2]*dir[0]-a1[0]*dir[2],a1[0]*dir[1]-a1[1]*dir[0]};
1320  double v[3] = {a0[1]*dir[2]-a0[2]*dir[1],a0[2]*dir[0]-a0[0]*dir[2],a0[0]*dir[1]-a0[1]*dir[0]};
1321 
1328 
1331  double du = a0[0]*u[0]+a0[1]*u[1]+a0[2]*u[2];
1332 
1334  if (du==0. ) return false;
1335 
1342  double s0 = (dr[0]*u[0]+dr[1]*u[1]+dr[2]*u[2])/du;
1347  double s1 = (dr[0]*v[0]+dr[1]*v[1]+dr[2]*v[2])/du;
1348 
1353  if (s0 < -d0 || s0 > 1.+d0 || s1 < -d0 || s1 > 1.+d0) return false;
1354 
1357  p[0] = e0.first.x()+s0*a0[0];
1358  p[1] = e0.first.y()+s0*a0[1];
1359  p[2] = e0.first.z()+s0*a0[2];
1360 
1361  return true;
1362 }

◆ globalPositions()

bool InDet::SiTrackMaker_xk::globalPositions ( const Trk::SpacePoint s0,
const Trk::SpacePoint s1,
const Trk::SpacePoint s2,
double *  p0,
double *  p1,
double *  p2 
) const
private

first, fill the arrays with the global positions of the 3 points

for PPP seeds, we are done

for SSS, we need some extra work

try to refine the position estimate for strip SP using the cluster information in combination with the direction estimate

Definition at line 1246 of file SiTrackMaker_xk.cxx.

1249 {
1250 
1252  p0[0] = s0.globalPosition().x();
1253  p0[1] = s0.globalPosition().y();
1254  p0[2] = s0.globalPosition().z();
1255 
1256  p1[0] = s1.globalPosition().x();
1257  p1[1] = s1.globalPosition().y();
1258  p1[2] = s1.globalPosition().z();
1259 
1260  p2[0] = s2.globalPosition().x();
1261  p2[1] = s2.globalPosition().y();
1262  p2[2] = s2.globalPosition().z();
1263 
1265  if (!s0.clusterList().second && !s1.clusterList().second && !s2.clusterList().second) return true;
1266 
1268  double dir0[3],dir1[3],dir2[3];
1269 
1270  globalDirections(p0,p1,p2,dir0,dir1,dir2);
1271 
1274  if (s0.clusterList().second && !globalPosition(s0,dir0,p0)) return false;
1275  if (s1.clusterList().second && !globalPosition(s1,dir1,p1)) return false;
1276  if (s2.clusterList().second && !globalPosition(s2,dir2,p2)) return false;
1277 
1278  return true;
1279 }

◆ initialize()

StatusCode InDet::SiTrackMaker_xk::initialize ( )
overridevirtual

Get beam geometry

read the config string for the field mode

this one is the default

Get detector elements road maker tool

Get combinatorial track finder tool

Get trigger track following tool

Get trigger road predictor tool

Get seed to track conversion tool This is used if we want to write out the seeds for performance studies

flag for HI running

this is on by default in offline tracking

useSSSfilter is on by default in offline, m_useHClusSeed is off by default.

pt cut can never be below 20 MeV

initialize counters

Definition at line 38 of file SiTrackMaker_xk.cxx.

39 {
42  if (not m_beamSpotKey.empty()) {
44  }
45 
47  if (m_fieldmode == "NoField") m_fieldModeEnum = Trk::NoField;
48  else if (m_fieldmode == "MapSolenoid") m_fieldModeEnum = Trk::FastField;
50 
53  if ( m_roadmaker.retrieve().isFailure() ) {
54  ATH_MSG_FATAL( "Failed to retrieve tool " << m_roadmaker );
55  return StatusCode::FAILURE;
56  }
57  ATH_MSG_DEBUG( "Retrieved tool " << m_roadmaker );
58 
61  if ( m_tracksfinder.retrieve().isFailure() ) {
62  ATH_MSG_FATAL( "Failed to retrieve tool " << m_tracksfinder );
63  return StatusCode::FAILURE;
64  }
65  ATH_MSG_DEBUG( "Retrieved tool " << m_tracksfinder );
66 
70  if ( m_trigInDetTrackFollowingTool.retrieve().isFailure() ) {
71  ATH_MSG_FATAL( "Failed to retrieve tool " << m_trigInDetTrackFollowingTool );
72  return StatusCode::FAILURE;
73  }
74  ATH_MSG_DEBUG( "Retrieved tool " << m_trigInDetTrackFollowingTool );
75  } else {
77  }
78 
82  if ( m_trigInDetRoadPredictorTool.retrieve().isFailure() ) {
83  ATH_MSG_FATAL( "Failed to retrieve tool " << m_trigInDetRoadPredictorTool );
84  return StatusCode::FAILURE;
85  }
86  ATH_MSG_DEBUG( "Retrieved tool " << m_trigInDetRoadPredictorTool );
87  } else {
89  }
90 
94  if (m_seedsegmentsWrite) {
95  if (m_seedtrack.retrieve().isFailure()) {
96  ATH_MSG_FATAL( "Failed to retrieve tool " << m_seedtrack );
97  return StatusCode::FAILURE;
98  }
99  ATH_MSG_DEBUG( "Retrieved tool " << m_seedtrack );
100  } else {
101  m_seedtrack.disable();
102  }
103 
105  m_heavyion = false;
106 
107 
108  // TrackpatternRecoInfo preparation
109  //
110  if (m_patternName == "SiSpacePointsSeedMaker_Cosmic" ) {
112  } else if (m_patternName == "SiSpacePointsSeedMaker_HeavyIon" ) {
114  m_heavyion = true;
115  } else if (m_patternName == "SiSpacePointsSeedMaker_LowMomentum") {
117  } else if (m_patternName == "SiSpacePointsSeedMaker_BeamGas" ) {
119  } else if (m_patternName == "SiSpacePointsSeedMaker_ForwardTracks" ) {
121  } else if (m_patternName == "SiSpacePointsSeedMaker_LargeD0" ) {
123  } else if (m_patternName == "SiSpacePointsSeedMaker_ITkConversionTracks") {
125  } else {
127  }
128 
133 
135  if (m_pTmin < 20.) m_pTmin = 20.;
136 
137  if (m_etabins.size()>0) {
138  if (m_ptbins.size() > (m_etabins.size()-1)) {
139  ATH_MSG_ERROR( "No. of cut values bigger than eta bins");
140  return StatusCode::FAILURE;
141  }
142 
143  if (m_ptbins.size() < (m_etabins.size()-1)) {
144  ATH_MSG_DEBUG( "No. of cut values smaller than eta bins. Extending size..." );
145  m_ptbins.value().resize(m_etabins.size()-1, m_ptbins.value().back());
146  }
147 
148  for (auto& pt : m_ptbins) {
149  if (pt < 20.) pt = 20.;
150  }
151  }
152 
153 
155  resetCounter(m_totalInputSeeds);
156  resetCounter(m_totalNoTrackPar);
157  resetCounter(m_totalUsedSeeds);
158  resetCounter(m_outputTracks);
159  resetCounter(m_totalBremSeeds);
160  resetCounter(m_bremTracks);
161  resetCounter(m_twoClusters);
162  resetCounter(m_wrongRoad);
163  resetCounter(m_wrongInit);
164  resetCounter(m_noTrack);
165  resetCounter(m_notNewTrack);
166  resetCounter(m_bremAttempt);
167  resetCounter(m_seedsWithTrack);
168  resetCounter(m_deSize);
169  m_usedSeedsEta.resize(SiCombinatorialTrackFinderData_xk::kNSeedTypes);
170  m_seedsWithTracksEta.resize(SiCombinatorialTrackFinderData_xk::kNSeedTypes);
171  std::fill(m_usedSeedsEta.begin(), m_usedSeedsEta.end(), std::vector<double>(SiCombinatorialTrackFinderData_xk::kNRapidityRanges, 0.));
172  std::fill(m_seedsWithTracksEta.begin(), m_seedsWithTracksEta.end(), std::vector<double>(SiCombinatorialTrackFinderData_xk::kNRapidityRanges, 0.));
173 
177  return StatusCode::SUCCESS;
178 }

◆ isCaloCompatible()

bool InDet::SiTrackMaker_xk::isCaloCompatible ( SiTrackMakerEventData_xk data) const
private

Definition at line 1368 of file SiTrackMaker_xk.cxx.

1369 {
1370  if (!data.caloClusterROIEM()) return false;
1371 
1372 
1373  double F = data.par()[2] ;
1374  double E = -log(tan(.5*data.par()[3])) ;
1375  double R = sqrt(data.par()[6]*data.par()[6]+data.par()[7]*data.par()[7]);
1376  double Z = data.par()[8] ;
1377  return data.caloClusterROIEM()->hasMatchingROI(F, E, R, Z, m_phiWidth, m_etaWidth);
1378 }

◆ isHadCaloCompatible()

bool InDet::SiTrackMaker_xk::isHadCaloCompatible ( SiTrackMakerEventData_xk data) const
private

Definition at line 1384 of file SiTrackMaker_xk.cxx.

1385 {
1386  if (!data.caloClusterROIHad()) return false;
1387 
1388  double F = data.par()[2] ;
1389  double E = -log(tan(.5*data.par()[3])) ;
1390  double R = sqrt(data.par()[6]*data.par()[6]+data.par()[7]*data.par()[7]);
1391  double Z = data.par()[8] ;
1392 
1393  return data.caloClusterROIHad()->hasMatchingROI(F, E, R, Z, m_phiWidth, m_etaWidth);
1394 }

◆ isNewTrack()

bool InDet::SiTrackMaker_xk::isNewTrack ( SiTrackMakerEventData_xk data,
Trk::Track Tr 
)
staticprivate

Definition at line 1204 of file SiTrackMaker_xk.cxx.

1205 {
1206  const Trk::PrepRawData* prd [100];
1207  std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
1208  ti,t[100],te = data.clusterTrack().end();
1209 
1210  int n = 0;
1211 
1213  m = Tr->measurementsOnTrack()->begin(),
1214  me = Tr->measurementsOnTrack()->end ();
1215 
1216  for (; m!=me; ++m) {
1217 
1218  const Trk::PrepRawData* pr = static_cast<const Trk::RIO_OnTrack*>(*m)->prepRawData();
1219  if (pr) {
1220  prd[n] =pr;
1221  t [n] = data.clusterTrack().find(prd[n]);
1222  if (t[n]==te) return true;
1223  ++n;
1224  }
1225  }
1226 
1227  if (!n) return true;
1228  int nclt = n;
1229 
1230  for (int i=0; i!=n; ++i) {
1231  int nclmax = 0;
1232  for (ti=t[i]; ti!=te; ++ti) {
1233  if ( (*ti).first != prd[i] ) break;
1234  int ncl = (*ti).second->measurementsOnTrack()->size();
1235  if (ncl > nclmax) nclmax = ncl;
1236  }
1237  if (nclt > nclmax) return true;
1238  }
1239  return false;
1240 }

◆ kindSeed()

int InDet::SiTrackMaker_xk::kindSeed ( const std::vector< const Trk::SpacePoint * > &  Sp)
staticprivate

Definition at line 1161 of file SiTrackMaker_xk.cxx.

1162 {
1163 
1164  if(Sp.size()!=3) return 0;//correct handling of Pixel-only ITk tracklets
1165 
1166  std::vector<const Trk::SpacePoint*>::const_iterator s=Sp.begin(),se=Sp.end();
1167 
1168  int n = 0;
1169  for(; s!=se; ++s) {if((*s)->clusterList().second) ++n;}
1170  return n;
1171 }

◆ newEvent()

void InDet::SiTrackMaker_xk::newEvent ( const EventContext &  ctx,
SiTrackMakerEventData_xk data,
bool  PIX,
bool  SCT 
) const
overridevirtual

initialize beam position

propagate pixel / strip usage to the event data object

build a holder for the configured track quality cuts

Setup New event for track finder tool

Erase cluster to track association m_seedsfilter is true in the vast majority of all applications, so this is usually done

Erase statistic information

retrieve calo seeds for brem fit

retrieve hadronic seeds for SSS seed filter

if we want to write out the seeds, also call newEvent for the seed-to-track converter

Definition at line 493 of file SiTrackMaker_xk.cxx.

494 {
495 
497  data.xybeam()[0] = 0.;
498  data.xybeam()[1] = 0.;
499  if (not m_beamSpotKey.empty()) {
501  if (beamSpotHandle.isValid()) {
502  data.xybeam()[0] = beamSpotHandle->beamPos()[0];
503  data.xybeam()[1] = beamSpotHandle->beamPos()[1];
504  }
505  }
507  data.pix() = PIX and m_usePix;
508  data.sct() = SCT and m_useSct;
509 
511  InDet::TrackQualityCuts trackquality = setTrackQualityCuts(false);
512 
514  m_tracksfinder->newEvent(ctx, data.combinatorialData(), m_trackinfo, trackquality);
515 
519  if (m_seedsfilter) data.clusterTrack().clear();
520 
523  data.inputseeds() = 0;
524  data.goodseeds() = 0;
525  data.findtracks() = 0;
526  resetCounter(data.summaryStatAll());
527  resetCounter(data.summaryStatUsedInTrack());
528 
532  if (!calo_rois.isValid()) {
533  ATH_MSG_FATAL("Failed to get EM Calo cluster collection " << m_caloCluster );
534  }
535  data.setCaloClusterROIEM(*calo_rois);
536  }
537 
539  if (!m_useSSSfilter && m_useHClusSeed) {
541  if (!calo_rois.isValid()) {
542  ATH_MSG_FATAL("Failed to get Had Calo cluster collection " << m_caloHad );
543  }
544  data.setCaloClusterROIHad(*calo_rois);
545  }
547  if (m_seedsegmentsWrite) m_seedtrack->newEvent(data.conversionData(), m_trackinfo, m_patternName);
548 }

◆ newSeed()

bool InDet::SiTrackMaker_xk::newSeed ( SiTrackMakerEventData_xk data,
const std::vector< const Trk::SpacePoint * > &  Sp 
) const
private

counter for clusters on track

start by checking the first cluster - always needed

lookup if the cluster is already used by another track

add tracks consuming our seed space-points to the trackseed list.

increment cluster counter

now, prepare to check also the second cluster on any strip seed

if we don't have one, nothing to do

otherwise, same game as before. Note that a track consuming both clusters on a strip hit is counted twice into the map

incremenent counter again

check if at least on cluster is not already used by any track. This works since the multiset allows adding the same track multiple times If this is the case, we accept the seed.

in the case of HI reco, we accept any 3-cluster (PPP) seed.

Now we look for the track consuming the largest number of clusters

This is done by looping over all tracks using any of our clusters, and counting the appearance of each track in the multiset. If one single track contains all of the clusters (--> is included n times), we reject this seed.

loop over the list of tracks

if this is a new track, reset the counter

otherwise increment the counter. If this track has all clusters from the seed on it, reject the event

If we have no single track 'eating' all of our clusters, we accept the seed

Definition at line 1092 of file SiTrackMaker_xk.cxx.

1093 {
1094  std::multiset<const Trk::Track*> trackseed;
1095  std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator iter_clusterOnTrack,iter_clusterOnTrackEnd = data.clusterTrack().end();
1096 
1098  size_t n = 0;
1099 
1100  for (const Trk::SpacePoint* spacePoint : Sp) {
1101 
1103  const Trk::PrepRawData* prd = spacePoint->clusterList().first;
1104 
1106  for (iter_clusterOnTrack = data.clusterTrack().find(prd); iter_clusterOnTrack!=iter_clusterOnTrackEnd; ++iter_clusterOnTrack) {
1107  if ((*iter_clusterOnTrack).first!=prd) break;
1109  trackseed.insert((*iter_clusterOnTrack).second);
1110  }
1112  ++n;
1114  prd = spacePoint->clusterList().second;
1116  if (!prd) continue;
1118  for (iter_clusterOnTrack = data.clusterTrack().find(prd); iter_clusterOnTrack!=iter_clusterOnTrackEnd; ++iter_clusterOnTrack) {
1119  if ((*iter_clusterOnTrack).first!=prd) break;
1120  trackseed.insert((*iter_clusterOnTrack).second);
1121  }
1123  ++n;
1124  }
1128  if(trackseed.size() < n) return true;
1130  if( m_heavyion && n==3 ) return true;
1131 
1133 
1138  const Trk::Track* currentTrack {nullptr};
1139  size_t clustersOnCurrent = 1;
1141  for(const Trk::Track* track : trackseed) {
1143  if(track != currentTrack) {
1144  currentTrack = track;
1145  clustersOnCurrent = 1;
1146  continue ;
1147  }
1150  if(++clustersOnCurrent == n) return false;
1151  }
1153  return clustersOnCurrent!=n;
1154 }

◆ newTrigEvent()

void InDet::SiTrackMaker_xk::newTrigEvent ( const EventContext &  ctx,
SiTrackMakerEventData_xk data,
bool  PIX,
bool  SCT 
) const
overridevirtual

Definition at line 554 of file SiTrackMaker_xk.cxx.

555 {
556  data.pix() = PIX && m_usePix;
557  data.sct() = SCT && m_useSct;
558  bool simpleTrack = true;
559 
560  InDet::TrackQualityCuts trackquality = setTrackQualityCuts(simpleTrack);
561 
562  // New event for track finder tool
563  //
564  m_tracksfinder->newEvent(ctx, data.combinatorialData(), m_trackinfo, trackquality);
565 
566  // Erase cluster to track association
567  //
568  if (m_seedsfilter) data.clusterTrack().clear();
569 
570  // Erase statistic information
571  //
572  data.inputseeds() = 0;
573  data.goodseeds() = 0;
574  data.findtracks() = 0;
575  for(int i=0; i!=SiCombinatorialTrackFinderData_xk::kNStatAllTypes; ++i) { for(int k = 0; k!=SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++k) data.summaryStatAll()[i][k] = 0.; }
576  for(int i=0; i!=SiCombinatorialTrackFinderData_xk::kNStatEtaTypes; ++i) { for(int k = 0; k!=SiCombinatorialTrackFinderData_xk::kNSeedTypes; ++k) { for(int r=0; r!=SiCombinatorialTrackFinderData_xk::kNRapidityRanges; ++r) data.summaryStatUsedInTrack()[i][k][r] = 0.; } }
577 
578  // Add possibility to write seed segment information
579  if (m_seedsegmentsWrite) m_seedtrack->newEvent(data.conversionData(), m_trackinfo, m_patternName);
580 
581 }

◆ operator=()

SiTrackMaker_xk& InDet::SiTrackMaker_xk::operator= ( const SiTrackMaker_xk )
privatedelete

◆ pTmin()

double InDet::SiTrackMaker_xk::pTmin ( double  eta) const
private

Definition at line 1476 of file SiTrackMaker_xk.cxx.

1477 {
1478  if (m_ptbins.size() == 0) return m_pTmin;
1479  double aeta = std::abs(eta);
1480  for(int n = int(m_ptbins.size()-1); n>=0; --n) {
1481  if(aeta > m_etabins[n]) return m_ptbins[n];
1482  }
1483  return m_pTmin;
1484 }

◆ rapidity()

int InDet::SiTrackMaker_xk::rapidity ( const std::vector< const Trk::SpacePoint * > &  Sp)
staticprivate

Definition at line 1173 of file SiTrackMaker_xk.cxx.

1174 {
1175  if(Sp.size() < 2) return 0;
1176 
1177  Amg::Vector3D delta_sp = Sp[0]->globalPosition() - Sp[1]->globalPosition();
1178  float eta = 2*std::abs(delta_sp.eta());
1179  int n = int(eta);
1180  if(n > 7) n = 7;
1181  return n;
1182 }

◆ resetCounter() [1/2]

template<typename T , size_t N, size_t M>
void InDet::SiTrackMaker_xk::resetCounter ( std::array< std::array< T, M >, N > &  a) const
inlineprivate

helper for working with the stat arrays

Definition at line 265 of file SiTrackMaker_xk.h.

265  {
266  for (auto & subarr : a) resetCounter(subarr);
267  }

◆ resetCounter() [2/2]

template<typename T , size_t N>
void InDet::SiTrackMaker_xk::resetCounter ( std::array< T, N > &  a) const
inlineprivate

Definition at line 268 of file SiTrackMaker_xk.h.

268  {
269  std::fill(a.begin(),a.end(),0);
270  }

◆ setTrackQualityCuts()

InDet::TrackQualityCuts InDet::SiTrackMaker_xk::setTrackQualityCuts ( bool  simpleTrack) const
private

Definition at line 1030 of file SiTrackMaker_xk.cxx.

1031 {
1032  InDet::TrackQualityCuts trackquality;
1033  // Integer cuts
1034  //
1035  trackquality.setIntCut("MinNumberOfClusters" ,m_nclusmin );
1036  trackquality.setIntCut("MinNumberOfWClusters",m_nwclusmin );
1037  trackquality.setIntCut("MaxNumberOfHoles" ,m_nholesmax );
1038  trackquality.setIntCut("MaxHolesGap" ,m_dholesmax );
1039 
1040  if (m_useassoTool) trackquality.setIntCut("UseAssociationTool",1);
1041  else trackquality.setIntCut("UseAssociationTool",0);
1042  if (m_cosmicTrack) trackquality.setIntCut("CosmicTrack" ,1);
1043  else trackquality.setIntCut("CosmicTrack" ,0);
1044  if (simpleTrack) trackquality.setIntCut("SimpleTrack" ,1);
1045  else trackquality.setIntCut("SimpleTrack" ,0);
1046  if (m_multitracks) trackquality.setIntCut("doMultiTracksProd" ,1);
1047  else trackquality.setIntCut("doMultiTracksProd" ,0);
1048 
1049  // Double cuts
1050  //
1051  trackquality.setDoubleCut("pTmin" ,m_pTmin );
1052  trackquality.setDoubleCut("pTminBrem" ,m_pTminBrem );
1053  trackquality.setDoubleCut("MaxXi2forCluster" ,m_xi2max );
1054  trackquality.setDoubleCut("MaxXi2forOutlier" ,m_xi2maxNoAdd);
1055  trackquality.setDoubleCut("MaxXi2forSearch" ,m_xi2maxlink );
1056  trackquality.setDoubleCut("MaxXi2MultiTracks" ,m_xi2multitracks);
1057 
1058  return trackquality;
1059 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_totalInputSeeds InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 186 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [2/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_totalUsedSeeds InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 187 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [3/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_totalNoTrackPar InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 188 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [4/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_totalBremSeeds InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 189 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [5/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_twoClusters InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 190 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [6/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_wrongRoad InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 191 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [7/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_wrongInit InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 192 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [8/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_noTrack InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 193 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [9/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_notNewTrack InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 194 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [10/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_bremAttempt InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 195 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [11/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_outputTracks InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 196 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [12/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_extraTracks InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 197 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [13/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_bremTracks InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 198 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [14/17]

std::array<std::atomic<int>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_seedsWithTrack InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 199 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [15/17]

std::array<std::atomic<double>,SiCombinatorialTrackFinderData_xk::kNSeedTypes> m_deSize InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE {}
mutableprivate

Definition at line 200 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [16/17]

std::vector<std::vector<double> > m_usedSeedsEta InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 202 of file SiTrackMaker_xk.h.

◆ ATLAS_THREAD_SAFE [17/17]

std::vector<std::vector<double> > m_seedsWithTracksEta InDet::SiTrackMaker_xk::ATLAS_THREAD_SAFE
mutableprivate

Definition at line 203 of file SiTrackMaker_xk.h.

◆ m_beamSpotKey

SG::ReadCondHandleKey<InDet::BeamSpotData> InDet::SiTrackMaker_xk::m_beamSpotKey {this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot"}
private

Definition at line 131 of file SiTrackMaker_xk.h.

◆ m_caloCluster

SG::ReadHandleKey<ROIPhiRZContainer> InDet::SiTrackMaker_xk::m_caloCluster {this, "EMROIPhiRZContainer", ""}
private

Definition at line 133 of file SiTrackMaker_xk.h.

◆ m_caloHad

SG::ReadHandleKey<ROIPhiRZContainer> InDet::SiTrackMaker_xk::m_caloHad {this, "HadROIPhiRZContainer", ""}
private

Definition at line 134 of file SiTrackMaker_xk.h.

◆ m_cosmicTrack

BooleanProperty InDet::SiTrackMaker_xk::m_cosmicTrack {this, "CosmicTrack", false, "Is it cosmic track"}
private

Definition at line 145 of file SiTrackMaker_xk.h.

◆ m_counterMutex

std::mutex InDet::SiTrackMaker_xk::m_counterMutex
mutableprivate

Definition at line 185 of file SiTrackMaker_xk.h.

◆ m_dholesmax

IntegerProperty InDet::SiTrackMaker_xk::m_dholesmax {this, "nHolesGapMax", 2, "Max holes gap"}
private

Definition at line 164 of file SiTrackMaker_xk.h.

◆ m_distmax

DoubleProperty InDet::SiTrackMaker_xk::m_distmax {this, "MaxDistanceForSCTsp", 5.}
private

Definition at line 161 of file SiTrackMaker_xk.h.

◆ m_etabins

DoubleArrayProperty InDet::SiTrackMaker_xk::m_etabins {this, "etaBins", {}, "eta bins"}
private

Definition at line 170 of file SiTrackMaker_xk.h.

◆ m_etaWidth

DoubleProperty InDet::SiTrackMaker_xk::m_etaWidth {this, "etaWidth", 0.3}
private

Definition at line 169 of file SiTrackMaker_xk.h.

◆ m_fieldCondObjInputKey

SG::ReadCondHandleKey<AtlasFieldCacheCondObj> InDet::SiTrackMaker_xk::m_fieldCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj", "Name of the Magnetic Field conditions object key"}
private

Definition at line 132 of file SiTrackMaker_xk.h.

◆ m_fieldmode

StringProperty InDet::SiTrackMaker_xk::m_fieldmode {this, "MagneticFieldMode", "MapSolenoid", "Mode of magnetic field"}
private

Definition at line 140 of file SiTrackMaker_xk.h.

◆ m_fieldModeEnum

Trk::MagneticFieldMode InDet::SiTrackMaker_xk::m_fieldModeEnum {Trk::FullField}
private

Definition at line 178 of file SiTrackMaker_xk.h.

◆ m_heavyion

bool InDet::SiTrackMaker_xk::m_heavyion {false}
private

Definition at line 177 of file SiTrackMaker_xk.h.

◆ m_indexToEnum

std::vector<statAllTypes> InDet::SiTrackMaker_xk::m_indexToEnum {kTwoClusters,kWrongInit,kWrongRoad,kNoTrack,kNotNewTrack,kBremAttempt}
private

Definition at line 228 of file SiTrackMaker_xk.h.

◆ m_ITKGeometry

BooleanProperty InDet::SiTrackMaker_xk::m_ITKGeometry {this, "ITKGeometry", false, "ITK geometry"}
private

Definition at line 151 of file SiTrackMaker_xk.h.

◆ m_LRTmode

BooleanProperty InDet::SiTrackMaker_xk::m_LRTmode {this, "LRTMode", false}
private

Definition at line 155 of file SiTrackMaker_xk.h.

◆ m_multitracks

BooleanProperty InDet::SiTrackMaker_xk::m_multitracks {this, "doMultiTracksProd", false}
private

Definition at line 146 of file SiTrackMaker_xk.h.

◆ m_nclusmin

IntegerProperty InDet::SiTrackMaker_xk::m_nclusmin {this, "nClustersMin", 6, "Min number clusters"}
private

Definition at line 165 of file SiTrackMaker_xk.h.

◆ m_nholesmax

IntegerProperty InDet::SiTrackMaker_xk::m_nholesmax {this, "nHolesMax", 2, "Max number holes"}
private

Definition at line 163 of file SiTrackMaker_xk.h.

◆ m_nwclusmin

IntegerProperty InDet::SiTrackMaker_xk::m_nwclusmin {this, "nWeightedClustersMin", 6, "Min umber weighted clusters(pix=2 sct=1)"}
private

Definition at line 166 of file SiTrackMaker_xk.h.

◆ m_patternName

StringProperty InDet::SiTrackMaker_xk::m_patternName {this, "TrackPatternRecoInfo", "SiSPSeededFinder", "Name of the pattern recognition"}
private

Definition at line 141 of file SiTrackMaker_xk.h.

◆ m_phiWidth

DoubleProperty InDet::SiTrackMaker_xk::m_phiWidth {this, "phiWidth", 0.3}
private

Definition at line 168 of file SiTrackMaker_xk.h.

◆ m_ptbins

DoubleArrayProperty InDet::SiTrackMaker_xk::m_ptbins {this, "pTBins", {}, "pT bins"}
private

Definition at line 171 of file SiTrackMaker_xk.h.

◆ m_pTmin

DoubleProperty InDet::SiTrackMaker_xk::m_pTmin {this, "pTmin", 500., "min pT"}
private

Definition at line 159 of file SiTrackMaker_xk.h.

◆ m_pTminBrem

DoubleProperty InDet::SiTrackMaker_xk::m_pTminBrem {this, "pTminBrem", 1000., "min pT for Brem mode"}
private

Definition at line 160 of file SiTrackMaker_xk.h.

◆ m_roadmaker

ToolHandle<InDet::ISiDetElementsRoadMaker> InDet::SiTrackMaker_xk::m_roadmaker {this, "RoadTool", "InDet::SiDetElementsRoadMaker_xk"}
private

Definition at line 122 of file SiTrackMaker_xk.h.

◆ m_seedsegmentsWrite

BooleanProperty InDet::SiTrackMaker_xk::m_seedsegmentsWrite {this, "SeedSegmentsWrite", false, "Call seed to track conversion"}
private

Definition at line 152 of file SiTrackMaker_xk.h.

◆ m_seedsfilter

BooleanProperty InDet::SiTrackMaker_xk::m_seedsfilter {this, "UseSeedFilter", true, "Use seed filter"}
private

Definition at line 139 of file SiTrackMaker_xk.h.

◆ m_seedtrack

ToolHandle<InDet::ISeedToTrackConversionTool> InDet::SiTrackMaker_xk::m_seedtrack {this, "SeedToTrackConversion", "InDet::SeedToTrackConversionTool"}
private

Definition at line 126 of file SiTrackMaker_xk.h.

◆ m_trackinfo

Trk::TrackInfo InDet::SiTrackMaker_xk::m_trackinfo
private

Definition at line 176 of file SiTrackMaker_xk.h.

◆ m_trackletPoints

IntegerProperty InDet::SiTrackMaker_xk::m_trackletPoints {this, "trackletPoints", 1, "Select which tracklet points to use"}
private

Definition at line 167 of file SiTrackMaker_xk.h.

◆ m_tracksfinder

ToolHandle<InDet::ISiCombinatorialTrackFinder> InDet::SiTrackMaker_xk::m_tracksfinder {this, "CombinatorialTrackFinder", "InDet::SiCombinatorialTrackFinder_xk"}
private

Definition at line 123 of file SiTrackMaker_xk.h.

◆ m_trigInDetRoadPredictorTool

ToolHandle<ITrigInDetRoadPredictorTool> InDet::SiTrackMaker_xk::m_trigInDetRoadPredictorTool {this, "TrigInDetRoadPredictorTool", "TrigInDetRoadPredictorTool_FTF"}
private

Definition at line 125 of file SiTrackMaker_xk.h.

◆ m_trigInDetTrackFollowingTool

ToolHandle<ITrigInDetTrackFollowingTool> InDet::SiTrackMaker_xk::m_trigInDetTrackFollowingTool {this, "TrigTrackFollowingTool", "TrigInDetTrackFollowingTool"}
private

Definition at line 124 of file SiTrackMaker_xk.h.

◆ m_useassoTool

BooleanProperty InDet::SiTrackMaker_xk::m_useassoTool {this, "UseAssociationTool", false, "Use prd-track association tool"}
private

Definition at line 144 of file SiTrackMaker_xk.h.

◆ m_useBremModel

BooleanProperty InDet::SiTrackMaker_xk::m_useBremModel {this, "useBremModel", false}
private

Definition at line 147 of file SiTrackMaker_xk.h.

◆ m_useCaloSeeds

BooleanProperty InDet::SiTrackMaker_xk::m_useCaloSeeds {this, "doCaloSeededBrem", false}
private

Definition at line 148 of file SiTrackMaker_xk.h.

◆ m_useHClusSeed

BooleanProperty InDet::SiTrackMaker_xk::m_useHClusSeed {this, "doHadCaloSeedSSS", false, "Hadronic Calorimeter Seeds"}
private

Definition at line 150 of file SiTrackMaker_xk.h.

◆ m_usePix

BooleanProperty InDet::SiTrackMaker_xk::m_usePix {this, "usePixel", true, "flags to set whether to use pixel/sct cluster, irrespective of what is in event"}
private

Definition at line 142 of file SiTrackMaker_xk.h.

◆ m_useSct

BooleanProperty InDet::SiTrackMaker_xk::m_useSct {this, "useSCT", true}
private

Definition at line 143 of file SiTrackMaker_xk.h.

◆ m_useSSSfilter

BooleanProperty InDet::SiTrackMaker_xk::m_useSSSfilter {this, "useSSSseedsFilter", true}
private

Definition at line 149 of file SiTrackMaker_xk.h.

◆ m_useTrigInDetRoadPredictorTool

BooleanProperty InDet::SiTrackMaker_xk::m_useTrigInDetRoadPredictorTool {this, "useTrigInDetRoadPredictorTool", false, "Option to use TrigInDetRoadPredictorTool instead of ISiDetElementsRoadMaker"}
private

Definition at line 154 of file SiTrackMaker_xk.h.

◆ m_useTrigTrackFollowingTool

BooleanProperty InDet::SiTrackMaker_xk::m_useTrigTrackFollowingTool {this, "useTrigTrackFollowingTool", false, "Option to use TrigInDetTrackFollowingTool instead of SiCombinatorialTrackFinder_xk"}
private

Definition at line 153 of file SiTrackMaker_xk.h.

◆ m_xi2max

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

Definition at line 156 of file SiTrackMaker_xk.h.

◆ m_xi2maxlink

DoubleProperty InDet::SiTrackMaker_xk::m_xi2maxlink {this, "Xi2maxlink", 200., "max Xi2 for clusters"}
private

Definition at line 158 of file SiTrackMaker_xk.h.

◆ m_xi2maxNoAdd

DoubleProperty InDet::SiTrackMaker_xk::m_xi2maxNoAdd {this, "Xi2maxNoAdd", 35., "max Xi2 for clusters"}
private

Definition at line 157 of file SiTrackMaker_xk.h.

◆ m_xi2multitracks

DoubleProperty InDet::SiTrackMaker_xk::m_xi2multitracks {this, "Xi2maxMultiTracks", 3., "max Xi2 for multi tracks"}
private

Definition at line 162 of file SiTrackMaker_xk.h.


The documentation for this class was generated from the following files:
Trk::SpacePoint::clusterList
const std::pair< const PrepRawData *, const PrepRawData * > & clusterList() const
return the pair of cluster pointers by reference
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:127
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Trk::SpacePoint
Definition: Tracking/TrkEvent/TrkSpacePoint/TrkSpacePoint/SpacePoint.h:35
beamspotman.r
def r
Definition: beamspotman.py:676
InDet::SiTrackMaker_xk::m_useSct
BooleanProperty m_useSct
Definition: SiTrackMaker_xk.h:143
InDet::SiTrackMaker_xk::m_distmax
DoubleProperty m_distmax
Definition: SiTrackMaker_xk.h:161
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
InDet::SiTrackMaker_xk::dumpStatistics
MsgStream & dumpStatistics(MsgStream &out) const
Definition: SiTrackMaker_xk.cxx:197
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
InDet::SiTrackMaker_xk::m_nclusmin
IntegerProperty m_nclusmin
Definition: SiTrackMaker_xk.h:165
ReadCellNoiseFromCoolCompare.s1
s1
Definition: ReadCellNoiseFromCoolCompare.py:378
InDet::SiTrackMaker_xk::m_fieldCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCondObjInputKey
Definition: SiTrackMaker_xk.h:132
InDet::SiTrackMaker_xk::m_xi2multitracks
DoubleProperty m_xi2multitracks
Definition: SiTrackMaker_xk.h:162
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:50
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
InDet::SiTrackMaker_xk::kTotalUsedSeeds
@ kTotalUsedSeeds
Definition: SiTrackMaker_xk.h:207
InDet::SiTrackMaker_xk::dumpconditions
MsgStream & dumpconditions(MsgStream &out) const
Definition: SiTrackMaker_xk.cxx:405
InDet::TrackQualityCuts::setIntCut
void setIntCut(const std::string &, int)
Definition: ISiCombinatorialTrackFinder.h:179
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
Trk::MagneticFieldProperties
Definition: MagneticFieldProperties.h:31
InDet::SiTrackMaker_xk::m_xi2maxNoAdd
DoubleProperty m_xi2maxNoAdd
Definition: SiTrackMaker_xk.h:157
InDet::SiTrackMaker_xk::kTotalNoTrackPar
@ kTotalNoTrackPar
Definition: SiTrackMaker_xk.h:208
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
AtlasFieldCacheCondObj
Definition: AtlasFieldCacheCondObj.h:19
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
InDet::SiTrackMaker_xk::m_nwclusmin
IntegerProperty m_nwclusmin
Definition: SiTrackMaker_xk.h:166
InDet::SiTrackMaker_xk::m_usePix
BooleanProperty m_usePix
Definition: SiTrackMaker_xk.h:142
InDet::SiTrackMaker_xk::m_seedtrack
ToolHandle< InDet::ISeedToTrackConversionTool > m_seedtrack
Definition: SiTrackMaker_xk.h:126
egammaEnergyPositionAllSamples::e1
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
MagField::AtlasFieldCache::getFieldZR
void getFieldZR(const double *ATH_RESTRICT xyz, double *ATH_RESTRICT bxyz, double *ATH_RESTRICT deriv=nullptr)
get B field valaue on the z-r plane at given position works only inside the solenoid.
Definition: AtlasFieldCache.cxx:86
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
Amg::Vector2D
Eigen::Matrix< double, 2, 1 > Vector2D
Definition: GeoPrimitives.h:48
Trk::oppositeMomentum
@ oppositeMomentum
Definition: PropDirection.h:21
InDet::SiTrackMaker_xk::m_heavyion
bool m_heavyion
Definition: SiTrackMaker_xk.h:177
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
Monitored::Z
@ Z
Definition: HistogramFillerUtils.h:24
hist_file_dump.d
d
Definition: hist_file_dump.py:137
InDet::SiTrackMaker_xk::kTotalBremSeeds
@ kTotalBremSeeds
Definition: SiTrackMaker_xk.h:209
plotBeamSpotCompare.x2
x2
Definition: plotBeamSpotCompare.py:218
extractSporadic.c1
c1
Definition: extractSporadic.py:134
DMTest::C
C_v1 C
Definition: C.h:26
InDet::SiTrackMaker_xk::dumpevent
static MsgStream & dumpevent(SiTrackMakerEventData_xk &data, MsgStream &out)
Definition: SiTrackMaker_xk.cxx:474
InDet::SiTrackMaker_xk::kWrongInit
@ kWrongInit
Definition: SiTrackMaker_xk.h:211
InDet::SiTrackMaker_xk::m_useTrigTrackFollowingTool
BooleanProperty m_useTrigTrackFollowingTool
Definition: SiTrackMaker_xk.h:153
TRTCalib_cfilter.p1
p1
Definition: TRTCalib_cfilter.py:130
InDet::SiTrackMaker_xk::m_xi2max
DoubleProperty m_xi2max
Definition: SiTrackMaker_xk.h:156
InDet::SiTrackMaker_xk::kSeedsWithTracksEta
@ kSeedsWithTracksEta
Definition: SiTrackMaker_xk.h:225
InDet::SiTrackMaker_xk::m_seedsfilter
BooleanProperty m_seedsfilter
Definition: SiTrackMaker_xk.h:139
InDet::SiTrackMaker_xk::m_trackinfo
Trk::TrackInfo m_trackinfo
Definition: SiTrackMaker_xk.h:176
test_pyathena.pt
pt
Definition: test_pyathena.py:11
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
MCP::ScaleSmearParam::s0
@ s0
InDet::SiTrackMaker_xk::m_fieldModeEnum
Trk::MagneticFieldMode m_fieldModeEnum
Definition: SiTrackMaker_xk.h:178
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
InDet::SiTrackMaker_xk::m_useCaloSeeds
BooleanProperty m_useCaloSeeds
Definition: SiTrackMaker_xk.h:148
InDet::SiTrackMaker_xk::m_pTmin
DoubleProperty m_pTmin
Definition: SiTrackMaker_xk.h:159
InDet::SiTrackMaker_xk::m_trigInDetRoadPredictorTool
ToolHandle< ITrigInDetRoadPredictorTool > m_trigInDetRoadPredictorTool
Definition: SiTrackMaker_xk.h:125
Trk::TrackInfo::SiSpacePointsSeedMaker_LargeD0
@ SiSpacePointsSeedMaker_LargeD0
Large d0 for displaced vertex searches.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:259
Trk::RIO_OnTrack
Definition: RIO_OnTrack.h:70
InDet::TrackQualityCuts
Definition: ISiCombinatorialTrackFinder.h:122
Trk::alongMomentum
@ alongMomentum
Definition: PropDirection.h:20
ReadCellNoiseFromCoolCompare.s4
s4
Definition: ReadCellNoiseFromCoolCompare.py:381
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::SiTrackMaker_xk::globalPositions
bool globalPositions(const Trk::SpacePoint &s0, const Trk::SpacePoint &s1, const Trk::SpacePoint &s2, double *p0, double *p1, double *p2) const
Definition: SiTrackMaker_xk.cxx:1247
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
InDet::SiTrackMaker_xk::kindSeed
static int kindSeed(const std::vector< const Trk::SpacePoint * > &Sp)
Definition: SiTrackMaker_xk.cxx:1161
InDet::SiTrackMaker_xk::m_fieldmode
StringProperty m_fieldmode
Definition: SiTrackMaker_xk.h:140
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
InDet::SiTrackMaker_xk::m_patternName
StringProperty m_patternName
Definition: SiTrackMaker_xk.h:141
MCP::ScaleSmearParam::r2
@ r2
keylayer_zslicemap.se
se
Definition: keylayer_zslicemap.py:194
InDet::SiTrackMaker_xk::m_useHClusSeed
BooleanProperty m_useHClusSeed
Definition: SiTrackMaker_xk.h:150
InDet::SiTrackMaker_xk::kUsedSeedsEta
@ kUsedSeedsEta
Definition: SiTrackMaker_xk.h:224
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
inf
TStreamerInfo * inf
Definition: liststreamerinfos.cxx:12
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
InDet::SiTrackMaker_xk::kSeedsWithTracks
@ kSeedsWithTracks
Definition: SiTrackMaker_xk.h:220
InDet::SiTrackMaker_xk::detectorElementsSelection
static void detectorElementsSelection(SiTrackMakerEventData_xk &data, std::vector< const InDetDD::SiDetectorElement * > &DE)
Definition: SiTrackMaker_xk.cxx:1065
InDetDD::SiLocalPosition
Definition: SiLocalPosition.h:31
Trk::FastField
@ FastField
call the fast field access method of the FieldSvc
Definition: MagneticFieldMode.h:20
InDet::SiTrackMaker_xk::isNewTrack
static bool isNewTrack(SiTrackMakerEventData_xk &data, Trk::Track *Tr)
Definition: SiTrackMaker_xk.cxx:1204
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
InDet::SiTrackMaker_xk::m_ptbins
DoubleArrayProperty m_ptbins
Definition: SiTrackMaker_xk.h:171
TRTCalib_cfilter.p2
p2
Definition: TRTCalib_cfilter.py:131
InDet::SiTrackMaker_xk::m_useTrigInDetRoadPredictorTool
BooleanProperty m_useTrigInDetRoadPredictorTool
Definition: SiTrackMaker_xk.h:154
InDet::SiTrackMaker_xk::m_seedsegmentsWrite
BooleanProperty m_seedsegmentsWrite
Definition: SiTrackMaker_xk.h:152
A
H
#define H(x, y, z)
Definition: MD5.cxx:114
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
InDet::SiCombinatorialTrackFinderData_xk::kNRapidityRanges
@ kNRapidityRanges
Definition: SiCombinatorialTrackFinderData_xk.h:52
InDet::SiTrackMaker_xk::setTrackQualityCuts
InDet::TrackQualityCuts setTrackQualityCuts(bool simpleTrack) const
Definition: SiTrackMaker_xk.cxx:1030
InDet::SiTrackMaker_xk::m_multitracks
BooleanProperty m_multitracks
Definition: SiTrackMaker_xk.h:146
InDet::SiTrackMaker_xk::kOutputTracks
@ kOutputTracks
Definition: SiTrackMaker_xk.h:216
lumiFormat.i
int i
Definition: lumiFormat.py:85
InDet::SiTrackMaker_xk::globalDirections
static void globalDirections(const double *p0, const double *p1, const double *p2, double *d0, double *d1, double *d2)
Here, we derive the local track direction in the space-points as the tangents to the estimated trajec...
Definition: SiTrackMaker_xk.cxx:1404
InDet::SiTrackMaker_xk::isHadCaloCompatible
bool isHadCaloCompatible(SiTrackMakerEventData_xk &data) const
Definition: SiTrackMaker_xk.cxx:1384
Trk::TrackInfo::SiSpacePointsSeedMaker_LowMomentum
@ SiSpacePointsSeedMaker_LowMomentum
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:224
beamspotman.n
n
Definition: beamspotman.py:731
InDet::SiTrackMaker_xk::globalPosition
bool globalPosition(const Trk::SpacePoint &sp, const double *dir, double *p) const
This is a refinement of the global position for strip space-points.
Definition: SiTrackMaker_xk.cxx:1289
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
makeTRTBarrelCans.y2
tuple y2
Definition: makeTRTBarrelCans.py:18
InDet::SiTrackMaker_xk::m_phiWidth
DoubleProperty m_phiWidth
Definition: SiTrackMaker_xk.h:168
InDet::SiCombinatorialTrackFinderData_xk::kNStatEtaTypes
@ kNStatEtaTypes
Definition: SiCombinatorialTrackFinderData_xk.h:50
InDet::SiCombinatorialTrackFinderData_xk::kNStatAllTypes
@ kNStatAllTypes
Definition: SiCombinatorialTrackFinderData_xk.h:49
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
InDet::SiTrackMaker_xk::m_roadmaker
ToolHandle< InDet::ISiDetElementsRoadMaker > m_roadmaker
Definition: SiTrackMaker_xk.h:122
InDet::SiTrackMaker_xk::m_useSSSfilter
BooleanProperty m_useSSSfilter
Definition: SiTrackMaker_xk.h:149
TileDCSDataPlotter.pr
pr
Definition: TileDCSDataPlotter.py:922
InDet::SiTrackMaker_xk::kNoTrack
@ kNoTrack
Definition: SiTrackMaker_xk.h:213
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
python.BunchSpacingUtils.rn
rn
Definition: BunchSpacingUtils.py:87
InDet::SiTrackMaker_xk::m_caloCluster
SG::ReadHandleKey< ROIPhiRZContainer > m_caloCluster
Definition: SiTrackMaker_xk.h:133
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Preparation.mode
mode
Definition: Preparation.py:94
Trk::TrackInfo::SiSpacePointsSeedMaker_Cosmic
@ SiSpacePointsSeedMaker_Cosmic
Entries allowing to distinguish different seed makers.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:222
InDet::SiTrackMaker_xk::m_useassoTool
BooleanProperty m_useassoTool
Definition: SiTrackMaker_xk.h:144
Trk::TrackInfo::SiSpacePointsSeedMaker_BeamGas
@ SiSpacePointsSeedMaker_BeamGas
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:225
InDet::SiTrackMaker_xk::pTmin
double pTmin(double eta) const
Definition: SiTrackMaker_xk.cxx:1476
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
InDet::SiTrackMaker_xk::kNotNewTrack
@ kNotNewTrack
Definition: SiTrackMaker_xk.h:214
AnalysisUtils::Delta::R
double R(const INavigable4Momentum *p1, const double v_eta, const double v_phi)
Definition: AnalysisMisc.h:49
InDet::TrackQualityCuts::setDoubleCut
void setDoubleCut(const std::string &, double)
Definition: ISiCombinatorialTrackFinder.h:186
Trk::TrackInfo::BremFit
@ BremFit
A brem fit was performed on this track.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:78
InDet::SiTrackMaker_xk::kWrongRoad
@ kWrongRoad
Definition: SiTrackMaker_xk.h:212
InDet::SiTrackMaker_xk::m_caloHad
SG::ReadHandleKey< ROIPhiRZContainer > m_caloHad
Definition: SiTrackMaker_xk.h:134
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
a0
double a0
Definition: globals.cxx:27
MuonR4::SegmentFit::ParamDefs::x0
@ x0
InDet::SiTrackMaker_xk::m_ITKGeometry
BooleanProperty m_ITKGeometry
Definition: SiTrackMaker_xk.h:151
InDet::SiTrackMaker_xk::m_dholesmax
IntegerProperty m_dholesmax
Definition: SiTrackMaker_xk.h:164
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
MagField::AtlasFieldCache::solenoidOn
bool solenoidOn() const
status of the magnets
Trk::FullField
@ FullField
Field is set to be realistic, but within a given Volume.
Definition: MagneticFieldMode.h:21
SCT
Definition: SCT_ChipUtils.h:14
InDet::SiTrackMaker_xk::m_useBremModel
BooleanProperty m_useBremModel
Definition: SiTrackMaker_xk.h:147
beamspotman.dir
string dir
Definition: beamspotman.py:623
Trk::TrackInfo::SiSpacePointsSeedMaker_HeavyIon
@ SiSpacePointsSeedMaker_HeavyIon
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:223
fill
void fill(H5::Group &out_file, size_t iterations)
Definition: test-hdf5-writer.cxx:95
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
MuonR4::SegmentFit::ParamDefs::y0
@ y0
InDetDD::SiDetectorElement::endsOfStrip
std::pair< Amg::Vector3D, Amg::Vector3D > endsOfStrip(const Amg::Vector2D &position) const
Special method for SCT to retrieve the two ends of a "strip" Returned coordinates are in global frame...
Definition: SiDetectorElement.cxx:339
ReadCellNoiseFromCoolCompare.s3
s3
Definition: ReadCellNoiseFromCoolCompare.py:380
Trk::PlaneSurface::createUniqueTrackParameters
virtual Surface::ChargedTrackParametersUniquePtr createUniqueTrackParameters(double l1, double l2, double phi, double theta, double qop, std::optional< AmgSymMatrix(5)> cov=std::nullopt) const override final
Use the Surface as a ParametersBase constructor, from local parameters - charged.
Definition: PlaneSurface.cxx:149
InDet::SiTrackMaker_xk::kTwoClusters
@ kTwoClusters
Definition: SiTrackMaker_xk.h:210
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
InDet::SiTrackMaker_xk::m_trackletPoints
IntegerProperty m_trackletPoints
Definition: SiTrackMaker_xk.h:167
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
InDet::SiTrackMaker_xk::m_etabins
DoubleArrayProperty m_etabins
Definition: SiTrackMaker_xk.h:170
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
dqt_zlumi_alleff_HIST.B
B
Definition: dqt_zlumi_alleff_HIST.py:110
InDet::SiTrackMaker_xk::isCaloCompatible
bool isCaloCompatible(SiTrackMakerEventData_xk &data) const
Definition: SiTrackMaker_xk.cxx:1368
InDet::SiTrackMaker_xk::kBremTracks
@ kBremTracks
Definition: SiTrackMaker_xk.h:218
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Trk::RIO_OnTrack::prepRawData
virtual const Trk::PrepRawData * prepRawData() const =0
returns the PrepRawData (also known as RIO) object to which this RIO_OnTrack is associated.
InDet::SiTrackMaker_xk::m_etaWidth
DoubleProperty m_etaWidth
Definition: SiTrackMaker_xk.h:169
InDet::SiTrackMaker_xk::m_tracksfinder
ToolHandle< InDet::ISiCombinatorialTrackFinder > m_tracksfinder
Definition: SiTrackMaker_xk.h:123
ReadCellNoiseFromCoolCompare.v2
v2
Definition: ReadCellNoiseFromCoolCompare.py:364
CheckAppliedSFs.pu
pu
Definition: CheckAppliedSFs.py:311
Trk::Track::measurementsOnTrack
const DataVector< const MeasurementBase > * measurementsOnTrack() const
return a pointer to a vector of MeasurementBase (NOT including any that come from outliers).
Definition: Tracking/TrkEvent/TrkTrack/src/Track.cxx:178
python.PyAthena.v
v
Definition: PyAthena.py:154
Trk::TrackInfo::SiSPSeededFinder
@ SiSPSeededFinder
Tracks from SiSPSeedFinder.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:102
InDet::SiTrackMaker_xk::dump
MsgStream & dump(SiTrackMakerEventData_xk &data, MsgStream &out) const override
Definition: SiTrackMaker_xk.cxx:394
a
TList * a
Definition: liststreamerinfos.cxx:10
Trk::TrackInfo::SiSpacePointsSeedMaker_ForwardTracks
@ SiSpacePointsSeedMaker_ForwardTracks
Entries allowing to distinguish different seed makers.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:241
Trk::PlaneSurface
Definition: PlaneSurface.h:64
InDet::SiTrackMaker_xk::kTotalInputSeeds
@ kTotalInputSeeds
Definition: SiTrackMaker_xk.h:206
InDet::SiTrackMaker_xk::newSeed
bool newSeed(SiTrackMakerEventData_xk &data, const std::vector< const Trk::SpacePoint * > &Sp) const
Definition: SiTrackMaker_xk.cxx:1092
InDet::SiTrackMaker_xk::getAtaPlane
std::unique_ptr< Trk::TrackParameters > getAtaPlane(MagField::AtlasFieldCache &fieldCache, SiTrackMakerEventData_xk &data, bool sss, const std::vector< const Trk::SpacePoint * > &SP, const EventContext &ctx) const
Definition: SiTrackMaker_xk.cxx:860
InDet::SiTrackMaker_xk::kDESize
@ kDESize
Definition: SiTrackMaker_xk.h:219
dq_defect_virtual_defect_validation.d2
d2
Definition: dq_defect_virtual_defect_validation.py:81
InDet::SiTrackMaker_xk::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: SiTrackMaker_xk.h:131
DEBUG
#define DEBUG
Definition: page_access.h:11
F
#define F(x, y, z)
Definition: MD5.cxx:112
ReadCellNoiseFromCoolCompare.s2
s2
Definition: ReadCellNoiseFromCoolCompare.py:379
MagField::AtlasFieldCache
Local cache for magnetic field (based on MagFieldServices/AtlasFieldSvcTLS.h)
Definition: AtlasFieldCache.h:43
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
InDet::SiTrackMaker_xk::m_pTminBrem
DoubleProperty m_pTminBrem
Definition: SiTrackMaker_xk.h:160
S2
struct TBPatternUnitContext S2
InDet::SiTrackMaker_xk::m_cosmicTrack
BooleanProperty m_cosmicTrack
Definition: SiTrackMaker_xk.h:145
InDet::SiTrackMaker_xk::m_counterMutex
std::mutex m_counterMutex
Definition: SiTrackMaker_xk.h:185
InDet::SiTrackMaker_xk::resetCounter
void resetCounter(std::array< std::array< T, M >, N > &a) const
helper for working with the stat arrays
Definition: SiTrackMaker_xk.h:265
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
Trk::TrackInfo::setPatternRecognitionInfo
void setPatternRecognitionInfo(const TrackPatternRecoInfo &patternReco)
Method setting the pattern recognition algorithm.
egammaEnergyPositionAllSamples::e0
double e0(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in pre-sampler
InDet::SiTrackMaker_xk::m_xi2maxlink
DoubleProperty m_xi2maxlink
Definition: SiTrackMaker_xk.h:158
Trk::MagneticFieldMode
MagneticFieldMode
Definition: MagneticFieldMode.h:17
InDet::SiTrackMaker_xk::rapidity
static int rapidity(const std::vector< const Trk::SpacePoint * > &Sp)
Definition: SiTrackMaker_xk.cxx:1173
InDet::SiTrackMaker_xk::m_indexToEnum
std::vector< statAllTypes > m_indexToEnum
Definition: SiTrackMaker_xk.h:228
InDet::SiTrackMaker_xk::m_trigInDetTrackFollowingTool
ToolHandle< ITrigInDetTrackFollowingTool > m_trigInDetTrackFollowingTool
Definition: SiTrackMaker_xk.h:124
Trk::Surface::transform
const Amg::Transform3D & transform() const
Returns HepGeom::Transform3D by reference.
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
InDet::SiCombinatorialTrackFinderData_xk::kNSeedTypes
@ kNSeedTypes
Definition: SiCombinatorialTrackFinderData_xk.h:51
python.AutoConfigFlags.msg
msg
Definition: AutoConfigFlags.py:7
InDet::SiTrackMaker_xk::kBremAttempt
@ kBremAttempt
Definition: SiTrackMaker_xk.h:215
InDet::SiCluster
Definition: InnerDetector/InDetRecEvent/InDetPrepRawData/InDetPrepRawData/SiCluster.h:40
InDet::SiTrackMaker_xk::clusterTrackMap
static void clusterTrackMap(SiTrackMakerEventData_xk &data, Trk::Track *Tr)
Definition: SiTrackMaker_xk.cxx:1188
Trk::TrackInfo::SiSpacePointsSeedMaker_ITkConversionTracks
@ SiSpacePointsSeedMaker_ITkConversionTracks
ITkConversion Track flag.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/TrackInfo.h:262
InDet::SiTrackMaker_xk::kExtraTracks
@ kExtraTracks
Definition: SiTrackMaker_xk.h:217
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
TRTCalib_cfilter.p0
p0
Definition: TRTCalib_cfilter.py:129
fitman.k
k
Definition: fitman.py:528
InDet::SiTrackMaker_xk::m_nholesmax
IntegerProperty m_nholesmax
Definition: SiTrackMaker_xk.h:163