ATLAS Offline Software
EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 #ifndef TRACKFITTER_H
4 #define TRACKFITTER_H
5 
21 
22 #include <vector>
23 
25  : public AthMessaging
26 {
27  public:
28 
30  // Main interface functions
31 
32  int fitTracks(const std::vector<std::shared_ptr<const FPGATrackSimRoad>>& roads, std::vector<FPGATrackSimTrack>& tracks);
33 
34  const std::vector<FPGATrackSimTrack>& getMissingHitsCheckTracks() {return m_tracks_missinghits_track;}
35 
37  // Constructor and Initialization
38 
39  TrackFitter(const FPGATrackSimFitConstantBank *nominalbank, const std::vector<const FPGATrackSimFitConstantBank*>& droppedLayerbanks, bool guessingHits);
40 
42  // Simple getters and setters
43 
45  bool getIdentifyBadHit() const { return m_identify_badhit; }
46 
47  void setPlaneMap(FPGATrackSimPlaneMap const * map) { m_pmap = map; }
48  FPGATrackSimPlaneMap const * getPlaneMap() const { return m_pmap; }
49 
50  void setRegionMap(FPGATrackSimRegionMap const* map) { m_rmap = map; }
51 
53  int getNorecoveryNhits() const { return m_norecovery_nhits; }
54 
55  void setRequireFirst(bool v) { m_require_first = v; }
56  bool getRequireFirst() const { return m_require_first; }
57 
58  void setDoMajority(unsigned int v) { m_do_majority = v; }
59  unsigned getDoMajority() const { return m_do_majority; }
60 
63 
66 
69 
70  void setDoSecondStage(bool v) { m_do2ndStage = v; }
71  bool getDoSecondStage() const { return m_do2ndStage; }
72 
75 
76  void setDoDeltaGPhis(bool v) { m_doDeltaGPhis = v; }
77  bool getDoDeltaGPhis() const { return m_doDeltaGPhis; }
78 
80  // Getters of data flow quantities
81 
82  int getNFits() { return m_nfits; }
83  int getNFitsMajority() { return m_nfits_maj; }
86  int getNFitsRecovery() { return m_nfits_rec; }
87 
88 
89  private:
91  // Configuration
92  bool m_do2ndStage = false;
93  bool m_guessinghits = true;
95  bool m_doDeltaGPhis = false;
96 
97  // Hit Combation
98  const int m_max_ncomb = 10000; // maximum number of combinations to process per road
99  unsigned m_do_majority = 1; // Do majority fits. If >1, we only do majority fits if ALL full fits fail the chi2 cut
100  bool m_require_first = true; // Require a hit in the first layer when doing majority recovery
101  int m_norecovery_nhits = -1; // maximum number of hits per superstrip beyond which majority is not attempted
102 
103  bool m_setDoMissingHitsCheck = false; // do missing hits check
104 
105  // Chi2
106  float m_Chi2Dof_recovery_min = 40.; //Minimum chi2 cut to do recovery fits
107  float m_Chi2Dof_recovery_max = 1e30; //maximum chi2 cut to do recovery fits
108 
109  // Output
110  bool m_identify_badhit = false; // enables the identification of the bad hits for the recovery
111 
112 
114  // Storage
115 
116  // Convenience pointer to mapping classes.
117  FPGATrackSimPlaneMap const *m_pmap = nullptr;
118  FPGATrackSimRegionMap const* m_rmap = nullptr;
119 
120 
121  // This bank should always exist. If we are guessing hits there is only one bank and it is this one
122  // and if we are not guessing hits it is for 8/8
123  // It is just a pointer from BankSvc->FitConstantBank1stStage() but we copy it;
125 
126  // These are only used if we are not guessing hits, one for each plane missing
127  // Also just a set of pointers, but we copied them
128  std::vector<const FPGATrackSimFitConstantBank*> m_droppedLayerBanks;
129 
130  // These are the tracks we store if we are doing the missing hits cross-check
131  std::vector<FPGATrackSimTrack> m_tracks_missinghits_track;
132 
133  // Counters
134  int m_idbase = 0; // offset for new track ids
135  int m_nfits = 0; // number of fits tryied in a road
136  int m_nfits_maj = 0; // number of majority fits
137  int m_nfits_maj_SCT = 0; // number of majority fits with missing in SCT layer
138  int m_nfits_maj_pix = 0; // number of majority fits with missing in PIX layer
139  int m_nfits_rec = 0; // number of recoverd fits
140  int m_nfits_addrec = 0; // number of recoverd fits
141 
142 
144  // Helper Functions
145 
146  void resetCounters();
147  int fitTracks(const std::shared_ptr<const FPGATrackSimRoad> &road, std::vector<FPGATrackSimTrack> &tracks);
148  void getMissingInfo(const FPGATrackSimRoad & road, int & nMissing, bool & missPixel, bool & missStrip,
149  layer_bitmask_t & missing_mask, layer_bitmask_t & norecovery_mask);
150  void makeTrackCandidates(const FPGATrackSimRoad & road, const FPGATrackSimTrack & temp, std::vector<FPGATrackSimTrack> &track_cands);
151  FPGATrackSimTrack recoverTrack(FPGATrackSimTrack const & t, sector_t sector, layer_bitmask_t norecovery_mask, double qoverpt);
152  void compute_truth(FPGATrackSimTrack & newtrk) const;
153 };
154 
155 #endif // TRACKFITTER_H
TrackFitter::compute_truth
void compute_truth(FPGATrackSimTrack &newtrk) const
Definition: TrackFitter.cxx:427
TrackFitter::m_idbase
int m_idbase
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:134
TrackFitter::m_max_ncomb
const int m_max_ncomb
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:98
TrackFitter::setIdealCoordFitType
void setIdealCoordFitType(TrackCorrType type)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:73
TrackFitter::m_Chi2Dof_recovery_max
float m_Chi2Dof_recovery_max
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:107
TrackFitter
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:26
TrackFitter::m_nfits_maj_pix
int m_nfits_maj_pix
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:138
FPGATrackSimTrack
Definition: FPGATrackSimTrack.h:18
FPGATrackSimPlaneMap.h
Maps physical layers to logical layers.
TrackFitter::getNFitsMajoritySCI
int getNFitsMajoritySCI()
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:84
TrackFitter::getDoMajority
unsigned getDoMajority() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:59
TrackFitter::makeTrackCandidates
void makeTrackCandidates(const FPGATrackSimRoad &road, const FPGATrackSimTrack &temp, std::vector< FPGATrackSimTrack > &track_cands)
Creates a list of track candidates by taking all possible combination of hits in road.
Definition: TrackFitter.cxx:300
TrackFitter::m_require_first
bool m_require_first
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:100
TrackFitter::setChi2DofRecoveryMax
void setChi2DofRecoveryMax(float v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:67
TrackFitter::setPlaneMap
void setPlaneMap(FPGATrackSimPlaneMap const *map)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:47
TrackFitter::setDoMajority
void setDoMajority(unsigned int v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:58
FPGATrackSimFitConstantBank.h
TrackFitter::m_Chi2Dof_recovery_min
float m_Chi2Dof_recovery_min
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:106
TrackFitter::getNorecoveryNhits
int getNorecoveryNhits() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:53
TrackFitter::m_identify_badhit
bool m_identify_badhit
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:110
TrackFitter::getMissingHitsCheckTracks
const std::vector< FPGATrackSimTrack > & getMissingHitsCheckTracks()
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:34
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
TrackFitter::recoverTrack
FPGATrackSimTrack recoverTrack(FPGATrackSimTrack const &t, sector_t sector, layer_bitmask_t norecovery_mask, double qoverpt)
Given a N/N track that has a bad chi2, try to refit the track by taking away a single hit,...
Definition: TrackFitter.cxx:365
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
TrackFitter::m_tracks_missinghits_track
std::vector< FPGATrackSimTrack > m_tracks_missinghits_track
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:131
TrackFitter::setRequireFirst
void setRequireFirst(bool v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:55
TrackFitter::fitTracks
int fitTracks(const std::vector< std::shared_ptr< const FPGATrackSimRoad >> &roads, std::vector< FPGATrackSimTrack > &tracks)
Definition: TrackFitter.cxx:56
TrackFitter::setDoSecondStage
void setDoSecondStage(bool v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:70
TrackFitter::m_nfits_maj
int m_nfits_maj
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:136
FPGATrackSimRegionMap.h
Maps ITK module indices to FPGATrackSim regions.
TrackFitter::m_doDeltaGPhis
bool m_doDeltaGPhis
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:95
TrackFitter::m_do2ndStage
bool m_do2ndStage
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:92
TrackFitter::setRegionMap
void setRegionMap(FPGATrackSimRegionMap const *map)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:50
TrackFitter::m_guessinghits
bool m_guessinghits
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:93
TrackFitter::m_do_majority
unsigned m_do_majority
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:99
TrackFitter::m_pmap
FPGATrackSimPlaneMap const * m_pmap
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:117
master.flag
bool flag
Definition: master.py:29
TrackFitter::m_setDoMissingHitsCheck
bool m_setDoMissingHitsCheck
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:103
TrackFitter::m_nfits_addrec
int m_nfits_addrec
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:140
TrackFitter::m_nfits_maj_SCT
int m_nfits_maj_SCT
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:137
TrackFitter::getChi2DofRecoveryMax
float getChi2DofRecoveryMax() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:68
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
TrackFitter::getPlaneMap
FPGATrackSimPlaneMap const * getPlaneMap() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:48
TrackFitter::getChi2DofRecoveryMin
float getChi2DofRecoveryMin() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:65
TrackFitter::m_IdealCoordFitType
TrackCorrType m_IdealCoordFitType
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:94
TrackFitter::m_norecovery_nhits
int m_norecovery_nhits
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:101
TrackFitter::getDoDeltaGPhis
bool getDoDeltaGPhis() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:77
FPGATrackSimPlaneMap
Definition: FPGATrackSimPlaneMap.h:62
sector_t
int32_t sector_t
Definition: FPGATrackSimTypes.h:21
TrackFitter::m_rmap
FPGATrackSimRegionMap const * m_rmap
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:118
TrackFitter::getRequireFirst
bool getRequireFirst() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:56
TrackFitter::getMissingInfo
void getMissingInfo(const FPGATrackSimRoad &road, int &nMissing, bool &missPixel, bool &missStrip, layer_bitmask_t &missing_mask, layer_bitmask_t &norecovery_mask)
Definition: TrackFitter.cxx:234
TrackFitter::setIdentifyBadHit
void setIdentifyBadHit(bool flag)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:44
TrackCorrType::None
@ None
FPGATrackSimFunctions.h
FPGATrackSimFitConstantBank
Definition: FPGATrackSimFitConstantBank.h:24
TrackFitter::getNFitsMajorityPix
int getNFitsMajorityPix()
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:85
TrackFitter::m_nfits
int m_nfits
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:135
python.PyAthena.v
v
Definition: PyAthena.py:154
TrackFitter::getNFits
int getNFits()
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:82
TrackFitter::setDoMissingHitsCheck
void setDoMissingHitsCheck(bool v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:61
TrackFitter::m_nominalBank
const FPGATrackSimFitConstantBank * m_nominalBank
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:124
layer_bitmask_t
uint32_t layer_bitmask_t
Definition: FPGATrackSimTypes.h:22
AthMessaging.h
TrackFitter::getNFitsRecovery
int getNFitsRecovery()
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:86
TrackFitter::resetCounters
void resetCounters()
Definition: TrackFitter.cxx:39
TrackFitter::getIdentifyBadHit
bool getIdentifyBadHit() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:45
TrackFitter::setNorecoveryNhits
void setNorecoveryNhits(int v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:52
FPGATrackSimRegionMap
Definition: FPGATrackSimRegionMap.h:62
TrackFitter::setChi2DofRecoveryMin
void setChi2DofRecoveryMin(float v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:64
FPGATrackSimRoad.h
Defines a class for roads.
TrackCorrType
TrackCorrType
Definition: FPGATrackSimTypes.h:37
TrackFitter::getDoSecondStage
bool getDoSecondStage() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:71
TrackFitter::getDoMissingHitsCheck
bool getDoMissingHitsCheck() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:62
TrackFitter::setDoDeltaGPhis
void setDoDeltaGPhis(bool v)
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:76
TrackFitter::getIdealCoordFitType
TrackCorrType getIdealCoordFitType() const
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:74
TrackFitter::getNFitsMajority
int getNFitsMajority()
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:83
FPGATrackSimTrack.h
TrackFitter::TrackFitter
TrackFitter(void)
FPGATrackSimRoad
Definition: FPGATrackSimRoad.h:31
TrackFitter::m_droppedLayerBanks
std::vector< const FPGATrackSimFitConstantBank * > m_droppedLayerBanks
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:128
TrackFitter::m_nfits_rec
int m_nfits_rec
Definition: EFTracking/FPGATrackSim/FPGATrackSimAlgorithms/FPGATrackSimAlgorithms/TrackFitter.h:139