20 #ifndef PndTrackingQATimebased_H_ 21 #define PndTrackingQATimebased_H_ 23 #include "FairMultiLinkedData.h" 24 #include "FairRootManager.h" 34 #include <TClonesArray.h> 83 return "PossiblePrimary";
87 return "AtLeastThreeSec";
89 return "AtLeastThreePrim";
91 return "LessThanThreePrim";
93 return "McPossibleSec";
95 return "McAtLeastThreeSec";
97 return "McAtLeastThreePrim";
99 return "McLessThanThreePrim";
101 return "McAllTracksWithHits";
103 return "McAllTracks";
105 return "PartiallyImpure";
107 return "PartiallyPure";
111 return "FullyImpure";
120 return std::to_string(qNumber);
138 fSecondaryDefinitionPCAXY = kTRUE;
142 void AnalyseEvent(TClonesArray *recoTrackInfo);
145 Int_t GetNIdealHits(FairMultiLinkedData &track, TString branchName);
152 std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>>
GetEfficiencies() {
return fMapEfficiencies; }
157 std::map<Int_t, TVector3>
GetP() {
return fMapP; }
159 std::map<Int_t, Double_t>
GetPt() {
return fMapPt; }
161 std::map<Int_t, Double_t>
GetPl() {
return fMapPl; }
181 void PrintTrackDataSummary(FairMultiLinkedData &trackData, Bool_t detailedInfo = kFALSE);
182 void PrintTrackDataSummaryCompare(FairMultiLinkedData &recoTrackData, FairMultiLinkedData &idealTrackData);
187 void PrintTrackQualityMap(Bool_t detailedInfo = kFALSE);
188 void PrintTrackMCStatusMap();
189 void PrintTrackInfo(std::map<TString, FairMultiLinkedData> info);
193 if (fMCIdIdealTrackId.count(mctrackid) == 0)
195 return fMCIdIdealTrackId[mctrackid];
201 return fTimeBasedMCIdIdealTrackId[mctrackFairLink];
205 int mctrackid = fTrackIdMCId[trackid];
206 if (fMCIdIdealTrackId.count(mctrackid) == 0)
208 return fMCIdIdealTrackId[mctrackid];
214 PndTrackingQualityRecoInfo GetRecoInfoFromRecoTrackTimeBased(FairLink recoFairLink, Int_t mctrackId, FairLink mctrackFairLink);
220 virtual void FillMapTrackQualifikation();
221 Bool_t IsBetterTrackExisting(Int_t &mcIndex,
int quality);
223 Int_t GetSumOfAllValidMCHits(FairMultiLinkedData *trackData);
225 virtual Int_t AnalyseTrackInfo(std::map<TString, FairMultiLinkedData> &trackInfo, Int_t trackId);
227 FairLink AnalyseTrackInfoTimeBased(std::map<TString, FairMultiLinkedData> &trackInfo, FairLink trackId);
228 virtual void CalcEfficiencies(Int_t mostProbableTrack, std::map<TString, FairMultiLinkedData> &trackInfo);
229 virtual void CalcEfficienciesTimeBased(FairLink mostProbableTrackFairLink, std::map<TString, FairMultiLinkedData> &trackInfo);
231 GetMCInfoForBranch(TString branchName,
PndTrackCand *trackCand);
232 std::map<TString, FairMultiLinkedData>
237 FairRootManager *ioman;
239 TString fTrackBranchName;
240 TString fIdealTrackName;
241 Bool_t fPndTrackOrTrackCand;
242 std::string fPossibleTrackName;
244 Bool_t fCleanFunctor;
247 Bool_t fUseCorrectedSkewedHits;
248 Bool_t fRunTimeBased;
250 bool fSecondaryDefinitionPCAXY;
253 std::vector<TString> fBranchNames;
254 std::map<Int_t, Int_t> fTrackIdMCId;
255 std::map<Int_t, Int_t> fMCIdTrackId;
256 std::map<Int_t, Int_t> fMCIdIdealTrackId;
260 std::map<FairLink, FairLink> fTimeBasedTrackIdMCId;
261 std::map<FairLink, FairLink> fTimeBasedMCIdTrackId;
262 std::map<FairLink, FairLink> fTimeBasedMCIdIdealTrackId;
263 FairMultiLinkedData linksMCTrack;
265 std::map<Int_t, Int_t> fMCTrackFound;
266 std::map<FairLink, Int_t> fTimeBasedMCTrackFound;
268 std::map<Int_t, Int_t> fMapTrackMCStatus;
269 std::map<FairLink, Int_t> fTimeBasedMapTrackMCStatus;
271 std::map<Int_t, Int_t> fMapTrackQualification;
272 std::map<FairLink, Int_t> fTimeBasedMapTrackQualification;
274 std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>> fMapEfficiencies;
275 std::map<FairLink, std::map<TString, std::pair<Double_t, Int_t>>> fMapEfficienciesTimeBased;
278 std::map<Int_t, Double_t> fMapPResolution;
279 std::map<Int_t, TVector3> fMapP;
280 std::map<Int_t, Double_t> fMapPtResolution;
281 std::map<Int_t, Double_t> fMapPt;
282 std::map<Int_t, Double_t> fMapPResolutionRel;
283 std::map<Int_t, Double_t> fMapPtResolutionRel;
284 std::map<Int_t, Double_t> fMapPlResolution;
285 std::map<Int_t, Double_t> fMapPl;
286 std::map<Int_t, Double_t> fMapPlResolutionRel;
289 std::map<FairLink, Double_t> fTimeBasedMapPResolution;
290 std::map<FairLink, TVector3> fTimeBasedMapP;
291 std::map<FairLink, Double_t> fTimeBasedMapPtResolution;
292 std::map<FairLink, Double_t> fTimeBasedMapPt;
293 std::map<FairLink, Double_t> fTimeBasedMapPResolutionRel;
294 std::map<FairLink, Double_t> fTimeBasedMapPtResolutionRel;
295 std::map<FairLink, Double_t> fTimeBasedMapPlResolution;
296 std::map<FairLink, Double_t> fTimeBasedMapPl;
297 std::map<FairLink, Double_t> fTimeBasedMapPlResolutionRel;
299 TClonesArray *fTrack;
300 TClonesArray *fMCTrack;
301 TClonesArray *fIdealTrack;
302 TClonesArray *fTrackCand;
303 TClonesArray *fIdealTrackCand;
306 std::vector<double> fEventPurityVector;
308 std::map<int, int> fMapHitIdTimesUsedInEvent;
309 std::map<int, int> fMapHitIdTimesUsedInTrack;
std::map< FairLink, Double_t > GetTimeBasedPl()
std::map< Int_t, std::map< TString, std::pair< Double_t, Int_t > > > GetEfficiencies()
std::map< FairLink, Double_t > GetTimeBasedPResolution()
std::map< Int_t, Double_t > GetPtResolutionRel()
std::map< Int_t, TVector3 > GetP()
Int_t GetIdealTrackIdFromRecoTrackId(int trackid)
static const int kMcAtLeastThreeSec
std::map< FairLink, Int_t > GetTrackQualificationTimeBased()
std::map< FairLink, Int_t > GetCloneInfoforMCTrack()
void SetRunTimeBased(bool runTimeBased)
static const int kLessThanThreePrim
static const int kPossiblePrim
static const int kAtLeastThreeSec
std::map< Int_t, Double_t > GetPlResolutionRel()
std::map< FairLink, std::map< TString, std::pair< Double_t, Int_t > > > GetEfficienciesTimeBased()
static const int kMcPossibleSec
std::map< Int_t, Int_t > GetTrackMCStatus()
static const int kPartiallyPure
std::map< FairLink, Double_t > GetTimeBasedPt()
std::map< Int_t, Double_t > GetPResolutionRel()
std::map< FairLink, Double_t > GetTimeBasedPlResolution()
static std::string QualityNumberToString(int qNumber)
static const int kPossibleSec
static const int kPartiallyImpure
void SetHitsBranchNames(std::vector< TString > names)
std::map< Int_t, Int_t > GetTrackIdMCId()
std::map< FairLink, TVector3 > GetTimeBasedP()
void SetVerbose(Int_t val)
static const int kAtLeastThreePrim
FairLink GetIdealTrackFairLinkFromMCTrackFairLink(FairLink mctrackFairLink)
std::map< Int_t, Double_t > GetPl()
std::vector< double > GetEventPurityVector()
Holding statically callable quality numbers.
std::map< Int_t, Double_t > GetPlResolution()
static const int kMcLessThanThreePrim
std::map< FairLink, Int_t > GetMCTrackFoundTimeBased()
static const int kMcAllTracksWithHits
std::map< Int_t, Double_t > GetPt()
std::map< FairLink, Int_t > GetTrackMCStatusTimeBased()
std::map< FairLink, Double_t > GetTimeBasedPtResolutionRel()
static const int kMcAllTracks
static const int kFullyImpure
void AddHitsBranchName(TString name)
Adds branch names of detector data which should be taken into account in the analysis.
std::map< Int_t, Int_t > GetTrackQualification()
std::map< FairLink, Double_t > GetTimeBasedPtResolution()
static const int kMcAtLeastThreePrim
std::map< FairLink, Double_t > GetTimeBasedPlResolutionRel()
std::map< Int_t, Double_t > GetPResolution()
std::map< Int_t, Double_t > GetPtResolution()
void SetSecondaryDefinitionPCAXY(double dPCA)
Int_t GetIdealTrackIdFromMCTrackId(int mctrackid)
std::map< Int_t, Int_t > GetMCTrackFound()
std::map< FairLink, Double_t > GetTimeBasedPResolutionRel()
static const int kMcPossiblePrim
static const int kFullyPure
static const int kNotFound