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"}
 
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)"}
 
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 221 of file SiTrackMaker_xk.h.

221  {
224  };

◆ statAllTypes

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

Definition at line 203 of file SiTrackMaker_xk.h.

203  {
208  kTwoClusters,
209  kWrongInit,
210  kWrongRoad,
211  kNoTrack,
212  kNotNewTrack,
213  kBremAttempt,
215  kExtraTracks,
216  kBremTracks,
217  kDESize,
219  };

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 1163 of file SiTrackMaker_xk.cxx.

1164 {
1166  m = Tr->measurementsOnTrack()->begin(),
1167  me = Tr->measurementsOnTrack()->end ();
1168 
1169  for (; m!=me; ++m) {
1170  const Trk::PrepRawData* prd = static_cast<const Trk::RIO_OnTrack*>(*m)->prepRawData();
1171  if (prd) data.clusterTrack().insert(std::make_pair(prd, Tr));
1172  }
1173 }

◆ detectorElementsSelection()

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

Definition at line 1040 of file SiTrackMaker_xk.cxx.

1042 {
1044  while (d!=DE.end()) {
1045  if ((*d)->isPixel()) {
1046  if (!data.pix()) {
1047  d = DE.erase(d);
1048  continue;
1049  }
1050  } else if (!data.sct()) {
1051  d = DE.erase(d);
1052  continue;
1053  }
1054  ++d;
1055  }
1056 }

◆ 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 584 of file SiTrackMaker_xk.cxx.

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

◆ 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

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 856 of file SiTrackMaker_xk.cxx.

862 {
864  if (theSeed.size() < 3) return nullptr;
865 
867 
868  unsigned int middleIdx = theSeed.size() == 3 ? 1 : theSeed.size()/2;
869  const std::vector<const Trk::SpacePoint*> SP = {theSeed.at(0), theSeed.at(middleIdx), theSeed.back()};
870 
872  const Trk::PrepRawData* cl = SP[0]->clusterList().first;
873  if (!cl) return nullptr;
875  const Trk::PlaneSurface* pla =
876  static_cast<const Trk::PlaneSurface*>(&cl->detectorElement()->surface());
877  if (!pla) return nullptr;
878 
881  double p0[3],p1[3],p2[3];
882  if (!globalPositions(*(SP[0]),*(SP[1]),*(SP[2]),p0,p1,p2)) return nullptr;
883 
885  double x0 = p0[0] ;
886  double y0 = p0[1] ;
887  double z0 = p0[2] ;
888  double x1 = p1[0]-x0;
889  double y1 = p1[1]-y0;
890  double x2 = p2[0]-x0;
891  double y2 = p2[1]-y0;
892  double z2 = p2[2]-z0;
893 
896  double u1 = 1./sqrt(x1*x1+y1*y1) ;
898  double rn = x2*x2+y2*y2 ;
899  double r2 = 1./rn ;
901  double a = x1*u1 ;
902  double b = y1*u1 ;
904  double u2 = (a*x2+b*y2)*r2 ;
906  double v2 = (a*y2-b*x2)*r2 ;
909  double A = v2/(u2-u1) ;
910  double B = 2.*(v2-A*u2) ;
911  double C = B/sqrt(1.+A*A) ;
912  double T = z2*sqrt(r2)/(1.+.04*C*C*rn);
913  if(m_ITKGeometry){
914  T = std::abs(C) > 1.e-6 ? (z2*C)/asin(C*sqrt(rn)) : z2/sqrt(rn);
915  }
916 
917  const Amg::Transform3D& Tp = pla->transform();
918 
920  double Ax[3] = {Tp(0,0),Tp(1,0),Tp(2,0)};
922  double Ay[3] = {Tp(0,1),Tp(1,1),Tp(2,1)};
924  double D [3] = {Tp(0,3),Tp(1,3),Tp(2,3)};
926  double d[3] = {x0-D[0],y0-D[1],z0-D[2]};
928  data.par()[0] = d[0]*Ax[0]+d[1]*Ax[1]+d[2]*Ax[2];
929  data.par()[1] = d[0]*Ay[0]+d[1]*Ay[1]+d[2]*Ay[2];
930 
933  if (!fieldCache.solenoidOn()) fieldModeEnum = Trk::NoField;
934 
935  Trk::MagneticFieldProperties fieldprop(fieldModeEnum);
937  if (fieldprop.magneticFieldMode() > 0) {
938 
940  double H[3],gP[3] ={x0,y0,z0};
941  fieldCache.getFieldZR(gP, H);
942 
945  if (fabs(H[2])>.0001) {
947  data.par()[2] = atan2(b+a*A,a-b*A);
949  data.par()[3] = atan2(1.,T) ;
951  data.par()[5] = -C/(300.*H[2]) ;
952  } else {
955  T = z2*sqrt(r2) ;
956  data.par()[2] = atan2(y2,x2);
957  data.par()[3] = atan2(1.,T) ;
958  data.par()[5] = m_ITKGeometry ? 0.9/m_pTmin : 1./m_pTmin ;
959  }
960  }
962  else {
963  T = z2*sqrt(r2) ;
964  data.par()[2] = atan2(y2,x2);
965  data.par()[3] = atan2(1.,T) ;
966  data.par()[5] = m_ITKGeometry ? 0.9/m_pTmin : 1./m_pTmin ;
967  }
968 
969  double pTm = pTmin(SP[0]->eta()); // all spacepoints should have approx. same eta
970 
972  if (m_ITKGeometry){
973  if(std::abs(data.par()[5])*pTm > 1) return nullptr;
974  }
975  else if(std::abs(data.par()[5])*m_pTmin > 1.1) return nullptr;
976 
978  data.par()[4] = data.par()[5]/sqrt(1.+T*T);
979  data.par()[6] = x0 ;
980  data.par()[7] = y0 ;
981  data.par()[8] = z0 ;
982 
985  if (sss && !isHadCaloCompatible(data)) return nullptr;
986 
989  std::unique_ptr<Trk::TrackParameters> T0 = pla->createUniqueTrackParameters(data.par()[0],
990  data.par()[1],
991  data.par()[2],
992  data.par()[3],
993  data.par()[4],
994  std::nullopt);
995 
996  if(m_ITKGeometry && m_tracksfinder->pTseed(data.combinatorialData(),*T0,SP,ctx) < pTm) return nullptr;
997  else return T0;
998 
999 }

◆ 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 635 of file SiTrackMaker_xk.cxx.

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

◆ 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 793 of file SiTrackMaker_xk.cxx.

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

◆ 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 1378 of file SiTrackMaker_xk.cxx.

1380 {
1382  double x01 = p1[0]-p0[0] ;
1383  double y01 = p1[1]-p0[1] ;
1384  double x02 = p2[0]-p0[0] ;
1385  double y02 = p2[1]-p0[1] ;
1386 
1390 
1392  double d01 = x01*x01+y01*y01 ;
1393  double x1 = sqrt(d01) ;
1394  double u01 = 1./x1 ;
1395  double a = x01*u01 ;
1396  double b = y01*u01 ;
1398  double x2 = a*x02+b*y02 ;
1400  double y2 = a*y02-b*x02 ;
1401 
1403  double d02 = x2*x2+y2*y2 ;
1405  double u02 = x2/d02 ;
1406  double v02 = y2/d02 ;
1411  double A0 = v02 /(u02-u01) ;
1412  double B0 = 2.*(v02-A0*u02) ;
1413 
1419 
1420  double C2 = (1.-B0*y2) ;
1421  double S2 = (A0+B0*x2) ;
1422 
1423  double T = (p2[2]-p0[2])/sqrt(d02);
1424  double sinTheta = 1./sqrt(1.+T*T) ;
1425  double cosTheta = sinTheta*T ;
1426  double sinThetaCosAlpha = sinTheta / sqrt(1.+A0*A0) ;
1427  double Sa = sinThetaCosAlpha*a ;
1428  double Sb = sinThetaCosAlpha*b ;
1429 
1434  d0[0] = Sa -Sb*A0;
1435  d0[1]= Sb +Sa*A0;
1436  d0[2]=cosTheta;
1437 
1439  d1[0] = Sa +Sb*A0;
1440  d1[1]= Sb -Sa*A0;
1441  d1[2]=cosTheta;
1442 
1444  d2[0] = Sa*C2-Sb*S2;
1445  d2[1]= Sb*C2+Sa*S2;
1446  d2[2]=cosTheta;
1447 }

◆ 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 1263 of file SiTrackMaker_xk.cxx.

1265 {
1267  const Trk::PrepRawData* c0 = sp.clusterList().first;
1268  const Trk::PrepRawData* c1 = sp.clusterList().second;
1269 
1270  const InDetDD::SiDetectorElement* de0 = static_cast<const InDet::SiCluster*>(c0)->detectorElement();
1271  const InDetDD::SiDetectorElement* de1 = static_cast<const InDet::SiCluster*>(c1)->detectorElement();
1272 
1274  Amg::Vector2D localPos = c0->localPosition();
1275  std::pair<Amg::Vector3D,Amg::Vector3D> e0
1276  (de0->endsOfStrip(InDetDD::SiLocalPosition(localPos.y(),localPos.x(),0.)));
1277 
1278  localPos = c1->localPosition();
1279  std::pair<Amg::Vector3D,Amg::Vector3D> e1
1280  (de1->endsOfStrip(InDetDD::SiLocalPosition(localPos.y(),localPos.x(),0.)));
1281 
1284  double a0[3] = {e0.second.x()-e0.first.x(), e0.second.y()-e0.first.y(), e0.second.z()-e0.first.z()};
1285  double a1[3] = {e1.second.x()-e1.first.x(), e1.second.y()-e1.first.y(), e1.second.z()-e1.first.z()};
1287  double dr[3] = {e1.first .x()-e0.first.x(), e1.first .y()-e0.first.y(), e1.first .z()-e0.first.z()};
1288 
1290  double d0 = m_distmax/sqrt(a0[0]*a0[0]+a0[1]*a0[1]+a0[2]*a0[2]);
1291 
1294  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]};
1295  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]};
1296 
1303 
1306  double du = a0[0]*u[0]+a0[1]*u[1]+a0[2]*u[2];
1307 
1309  if (du==0. ) return false;
1310 
1317  double s0 = (dr[0]*u[0]+dr[1]*u[1]+dr[2]*u[2])/du;
1322  double s1 = (dr[0]*v[0]+dr[1]*v[1]+dr[2]*v[2])/du;
1323 
1328  if (s0 < -d0 || s0 > 1.+d0 || s1 < -d0 || s1 > 1.+d0) return false;
1329 
1332  p[0] = e0.first.x()+s0*a0[0];
1333  p[1] = e0.first.y()+s0*a0[1];
1334  p[2] = e0.first.z()+s0*a0[2];
1335 
1336  return true;
1337 }

◆ 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 1221 of file SiTrackMaker_xk.cxx.

1224 {
1225 
1227  p0[0] = s0.globalPosition().x();
1228  p0[1] = s0.globalPosition().y();
1229  p0[2] = s0.globalPosition().z();
1230 
1231  p1[0] = s1.globalPosition().x();
1232  p1[1] = s1.globalPosition().y();
1233  p1[2] = s1.globalPosition().z();
1234 
1235  p2[0] = s2.globalPosition().x();
1236  p2[1] = s2.globalPosition().y();
1237  p2[2] = s2.globalPosition().z();
1238 
1240  if (!s0.clusterList().second && !s1.clusterList().second && !s2.clusterList().second) return true;
1241 
1243  double dir0[3],dir1[3],dir2[3];
1244 
1245  globalDirections(p0,p1,p2,dir0,dir1,dir2);
1246 
1249  if (s0.clusterList().second && !globalPosition(s0,dir0,p0)) return false;
1250  if (s1.clusterList().second && !globalPosition(s1,dir1,p1)) return false;
1251  if (s2.clusterList().second && !globalPosition(s2,dir2,p2)) return false;
1252 
1253  return true;
1254 }

◆ 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 1343 of file SiTrackMaker_xk.cxx.

1344 {
1345  if (!data.caloClusterROIEM()) return false;
1346 
1347 
1348  double F = data.par()[2] ;
1349  double E = -log(tan(.5*data.par()[3])) ;
1350  double R = sqrt(data.par()[6]*data.par()[6]+data.par()[7]*data.par()[7]);
1351  double Z = data.par()[8] ;
1352  return data.caloClusterROIEM()->hasMatchingROI(F, E, R, Z, m_phiWidth, m_etaWidth);
1353 }

◆ isHadCaloCompatible()

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

Definition at line 1359 of file SiTrackMaker_xk.cxx.

1360 {
1361  if (!data.caloClusterROIHad()) return false;
1362 
1363  double F = data.par()[2] ;
1364  double E = -log(tan(.5*data.par()[3])) ;
1365  double R = sqrt(data.par()[6]*data.par()[6]+data.par()[7]*data.par()[7]);
1366  double Z = data.par()[8] ;
1367 
1368  return data.caloClusterROIHad()->hasMatchingROI(F, E, R, Z, m_phiWidth, m_etaWidth);
1369 }

◆ isNewTrack()

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

Definition at line 1179 of file SiTrackMaker_xk.cxx.

1180 {
1181  const Trk::PrepRawData* prd [100];
1182  std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator
1183  ti,t[100],te = data.clusterTrack().end();
1184 
1185  int n = 0;
1186 
1188  m = Tr->measurementsOnTrack()->begin(),
1189  me = Tr->measurementsOnTrack()->end ();
1190 
1191  for (; m!=me; ++m) {
1192 
1193  const Trk::PrepRawData* pr = static_cast<const Trk::RIO_OnTrack*>(*m)->prepRawData();
1194  if (pr) {
1195  prd[n] =pr;
1196  t [n] = data.clusterTrack().find(prd[n]);
1197  if (t[n]==te) return true;
1198  ++n;
1199  }
1200  }
1201 
1202  if (!n) return true;
1203  int nclt = n;
1204 
1205  for (int i=0; i!=n; ++i) {
1206  int nclmax = 0;
1207  for (ti=t[i]; ti!=te; ++ti) {
1208  if ( (*ti).first != prd[i] ) break;
1209  int ncl = (*ti).second->measurementsOnTrack()->size();
1210  if (ncl > nclmax) nclmax = ncl;
1211  }
1212  if (nclt > nclmax) return true;
1213  }
1214  return false;
1215 }

◆ kindSeed()

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

Definition at line 1136 of file SiTrackMaker_xk.cxx.

1137 {
1138 
1139  if(Sp.size()!=3) return 0;//correct handling of Pixel-only ITk tracklets
1140 
1141  std::vector<const Trk::SpacePoint*>::const_iterator s=Sp.begin(),se=Sp.end();
1142 
1143  int n = 0;
1144  for(; s!=se; ++s) {if((*s)->clusterList().second) ++n;}
1145  return n;
1146 }

◆ 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 1067 of file SiTrackMaker_xk.cxx.

1068 {
1069  std::multiset<const Trk::Track*> trackseed;
1070  std::multimap<const Trk::PrepRawData*,const Trk::Track*>::const_iterator iter_clusterOnTrack,iter_clusterOnTrackEnd = data.clusterTrack().end();
1071 
1073  size_t n = 0;
1074 
1075  for (const Trk::SpacePoint* spacePoint : Sp) {
1076 
1078  const Trk::PrepRawData* prd = spacePoint->clusterList().first;
1079 
1081  for (iter_clusterOnTrack = data.clusterTrack().find(prd); iter_clusterOnTrack!=iter_clusterOnTrackEnd; ++iter_clusterOnTrack) {
1082  if ((*iter_clusterOnTrack).first!=prd) break;
1084  trackseed.insert((*iter_clusterOnTrack).second);
1085  }
1087  ++n;
1089  prd = spacePoint->clusterList().second;
1091  if (!prd) continue;
1093  for (iter_clusterOnTrack = data.clusterTrack().find(prd); iter_clusterOnTrack!=iter_clusterOnTrackEnd; ++iter_clusterOnTrack) {
1094  if ((*iter_clusterOnTrack).first!=prd) break;
1095  trackseed.insert((*iter_clusterOnTrack).second);
1096  }
1098  ++n;
1099  }
1103  if(trackseed.size() < n) return true;
1105  if( m_heavyion && n==3 ) return true;
1106 
1108 
1113  const Trk::Track* currentTrack {nullptr};
1114  size_t clustersOnCurrent = 1;
1116  for(const Trk::Track* track : trackseed) {
1118  if(track != currentTrack) {
1119  currentTrack = track;
1120  clustersOnCurrent = 1;
1121  continue ;
1122  }
1125  if(++clustersOnCurrent == n) return false;
1126  }
1128  return clustersOnCurrent!=n;
1129 }

◆ 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 }

◆ operator=()

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

◆ pTmin()

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

Definition at line 1451 of file SiTrackMaker_xk.cxx.

1452 {
1453  if (m_ptbins.size() == 0) return m_pTmin;
1454  double aeta = std::abs(eta);
1455  for(int n = int(m_ptbins.size()-1); n>=0; --n) {
1456  if(aeta > m_etabins[n]) return m_ptbins[n];
1457  }
1458  return m_pTmin;
1459 }

◆ rapidity()

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

Definition at line 1148 of file SiTrackMaker_xk.cxx.

1149 {
1150  if(Sp.size() < 2) return 0;
1151 
1152  Amg::Vector3D delta_sp = Sp[0]->globalPosition() - Sp[1]->globalPosition();
1153  float eta = 2*std::abs(delta_sp.eta());
1154  int n = int(eta);
1155  if(n > 7) n = 7;
1156  return n;
1157 }

◆ 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 263 of file SiTrackMaker_xk.h.

263  {
264  for (auto & subarr : a) resetCounter(subarr);
265  }

◆ resetCounter() [2/2]

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

Definition at line 266 of file SiTrackMaker_xk.h.

266  {
267  std::fill(a.begin(),a.end(),0);
268  }

◆ setTrackQualityCuts()

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

Definition at line 1005 of file SiTrackMaker_xk.cxx.

1006 {
1007  InDet::TrackQualityCuts trackquality;
1008  // Integer cuts
1009  //
1010  trackquality.setIntCut("MinNumberOfClusters" ,m_nclusmin );
1011  trackquality.setIntCut("MinNumberOfWClusters",m_nwclusmin );
1012  trackquality.setIntCut("MaxNumberOfHoles" ,m_nholesmax );
1013  trackquality.setIntCut("MaxHolesGap" ,m_dholesmax );
1014 
1015  if (m_useassoTool) trackquality.setIntCut("UseAssociationTool",1);
1016  else trackquality.setIntCut("UseAssociationTool",0);
1017  if (m_cosmicTrack) trackquality.setIntCut("CosmicTrack" ,1);
1018  else trackquality.setIntCut("CosmicTrack" ,0);
1019  if (simpleTrack) trackquality.setIntCut("SimpleTrack" ,1);
1020  else trackquality.setIntCut("SimpleTrack" ,0);
1021  if (m_multitracks) trackquality.setIntCut("doMultiTracksProd" ,1);
1022  else trackquality.setIntCut("doMultiTracksProd" ,0);
1023 
1024  // Double cuts
1025  //
1026  trackquality.setDoubleCut("pTmin" ,m_pTmin );
1027  trackquality.setDoubleCut("pTminBrem" ,m_pTminBrem );
1028  trackquality.setDoubleCut("MaxXi2forCluster" ,m_xi2max );
1029  trackquality.setDoubleCut("MaxXi2forOutlier" ,m_xi2maxNoAdd);
1030  trackquality.setDoubleCut("MaxXi2forSearch" ,m_xi2maxlink );
1031  trackquality.setDoubleCut("MaxXi2MultiTracks" ,m_xi2multitracks);
1032 
1033  return trackquality;
1034 }

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 184 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 185 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 186 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 187 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 188 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 189 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 190 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 191 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 192 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 193 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 194 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 195 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 196 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 197 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 198 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 200 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 201 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 183 of file SiTrackMaker_xk.h.

◆ m_dholesmax

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

Definition at line 163 of file SiTrackMaker_xk.h.

◆ m_distmax

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

Definition at line 160 of file SiTrackMaker_xk.h.

◆ m_etabins

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

Definition at line 168 of file SiTrackMaker_xk.h.

◆ m_etaWidth

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

Definition at line 167 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 176 of file SiTrackMaker_xk.h.

◆ m_heavyion

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

Definition at line 175 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 226 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_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 164 of file SiTrackMaker_xk.h.

◆ m_nholesmax

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

Definition at line 162 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 165 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 166 of file SiTrackMaker_xk.h.

◆ m_ptbins

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

Definition at line 169 of file SiTrackMaker_xk.h.

◆ m_pTmin

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

Definition at line 158 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 159 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 174 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 155 of file SiTrackMaker_xk.h.

◆ m_xi2maxlink

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

Definition at line 157 of file SiTrackMaker_xk.h.

◆ m_xi2maxNoAdd

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

Definition at line 156 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 161 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:160
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:164
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:161
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:53
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
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
InDet::SiTrackMaker_xk::kTotalUsedSeeds
@ kTotalUsedSeeds
Definition: SiTrackMaker_xk.h:205
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:156
IDTPM::R
float R(const U &p)
Definition: TrackParametersHelper.h:101
InDet::SiTrackMaker_xk::kTotalNoTrackPar
@ kTotalNoTrackPar
Definition: SiTrackMaker_xk.h:206
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:165
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:79
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:175
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:207
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:209
InDet::SiTrackMaker_xk::m_useTrigTrackFollowingTool
BooleanProperty m_useTrigTrackFollowingTool
Definition: SiTrackMaker_xk.h:153
InDet::SiTrackMaker_xk::m_xi2max
DoubleProperty m_xi2max
Definition: SiTrackMaker_xk.h:155
InDet::SiTrackMaker_xk::kSeedsWithTracksEta
@ kSeedsWithTracksEta
Definition: SiTrackMaker_xk.h:223
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:174
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:176
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:158
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:1222
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:1136
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:222
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
inf
TStreamerInfo * inf
Definition: liststreamerinfos.cxx:12
makeTRTBarrelCans.y1
tuple y1
Definition: makeTRTBarrelCans.py:15
InDet::SiTrackMaker_xk::kSeedsWithTracks
@ kSeedsWithTracks
Definition: SiTrackMaker_xk.h:218
InDet::SiTrackMaker_xk::detectorElementsSelection
static void detectorElementsSelection(SiTrackMakerEventData_xk &data, std::vector< const InDetDD::SiDetectorElement * > &DE)
Definition: SiTrackMaker_xk.cxx:1040
dqt_zlumi_alleff_HIST.A
A
Definition: dqt_zlumi_alleff_HIST.py:110
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:1179
hotSpotInTAG.c0
c0
Definition: hotSpotInTAG.py:192
InDet::SiTrackMaker_xk::m_ptbins
DoubleArrayProperty m_ptbins
Definition: SiTrackMaker_xk.h:169
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
H
#define H(x, y, z)
Definition: MD5.cxx:114
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:1005
InDet::SiTrackMaker_xk::m_multitracks
BooleanProperty m_multitracks
Definition: SiTrackMaker_xk.h:146
InDet::SiTrackMaker_xk::kOutputTracks
@ kOutputTracks
Definition: SiTrackMaker_xk.h:214
lumiFormat.i
int i
Definition: lumiFormat.py:92
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:1379
InDet::SiTrackMaker_xk::isHadCaloCompatible
bool isHadCaloCompatible(SiTrackMakerEventData_xk &data) const
Definition: SiTrackMaker_xk.cxx:1359
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:1264
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:166
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:211
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:95
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:1451
drawFromPickle.tan
tan
Definition: drawFromPickle.py:36
InDet::SiTrackMaker_xk::kNotNewTrack
@ kNotNewTrack
Definition: SiTrackMaker_xk.h:212
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:210
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
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:163
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
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
Trk::PrepRawData
Definition: PrepRawData.h:62
Trk::NoField
@ NoField
Field is set to 0., 0., 0.,.
Definition: MagneticFieldMode.h:18
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:208
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
InDetDD::SiDetectorElement
Definition: SiDetectorElement.h:109
InDet::SiTrackMaker_xk::m_etabins
DoubleArrayProperty m_etabins
Definition: SiTrackMaker_xk.h:168
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:1343
InDet::SiTrackMaker_xk::kBremTracks
@ kBremTracks
Definition: SiTrackMaker_xk.h:216
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:167
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:157
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
lumiFormat.fill
fill
Definition: lumiFormat.py:111
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:204
InDet::SiTrackMaker_xk::newSeed
bool newSeed(SiTrackMakerEventData_xk &data, const std::vector< const Trk::SpacePoint * > &Sp) const
Definition: SiTrackMaker_xk.cxx:1067
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:857
InDet::SiTrackMaker_xk::kDESize
@ kDESize
Definition: SiTrackMaker_xk.h:217
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:159
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:183
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:263
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:157
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:1148
InDet::SiTrackMaker_xk::m_indexToEnum
std::vector< statAllTypes > m_indexToEnum
Definition: SiTrackMaker_xk.h:226
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:213
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:1163
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:215
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
fitman.k
k
Definition: fitman.py:528
InDet::SiTrackMaker_xk::m_nholesmax
IntegerProperty m_nholesmax
Definition: SiTrackMaker_xk.h:162