8 #ifndef PndTrackingQA_H_ 9 #define PndTrackingQA_H_ 11 #include "FairMultiLinkedData.h" 12 #include "FairRootManager.h" 20 #include <TClonesArray.h> 69 return "PossiblePrimary";
73 return "AtLeastThreeSec";
75 return "AtLeastThreePrim";
77 return "LessThanThreePrim";
79 return "McPossibleSec";
81 return "McAtLeastThreeSec";
83 return "McAtLeastThreePrim";
85 return "McLessThanThreePrim";
87 return "McAllTracksWithHits";
91 return "PartiallyImpure";
93 return "PartiallyPure";
106 return std::to_string(qNumber);
112 PndTrackingQA(TString trackBranchName, TString idealTrackName, Bool_t pndTrackData = kTRUE);
123 void AnalyseEvent(TClonesArray *recoTrackInfo);
126 Int_t GetNIdealHits(FairMultiLinkedData &track, TString branchName);
133 std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>>
GetEfficiencies() {
return fMapEfficiencies; }
138 std::map<Int_t, TVector3>
GetP() {
return fMapP; }
140 std::map<Int_t, Double_t>
GetPt() {
return fMapPt; }
142 std::map<Int_t, Double_t>
GetPl() {
return fMapPl; }
162 void PrintTrackDataSummary(FairMultiLinkedData &trackData, Bool_t detailedInfo = kFALSE);
163 void PrintTrackDataSummaryCompare(FairMultiLinkedData &recoTrackData, FairMultiLinkedData &idealTrackData);
168 void PrintTrackQualityMap(Bool_t detailedInfo = kFALSE);
169 void PrintTrackMCStatusMap();
170 void PrintTrackInfo(std::map<TString, FairMultiLinkedData> info);
174 if (fMCIdIdealTrackId.count(mctrackid) == 0)
176 return fMCIdIdealTrackId[mctrackid];
182 return fTimeBasedMCIdIdealTrackId[mctrackFairLink];
186 int mctrackid = fTrackIdMCId[trackid];
187 if (fMCIdIdealTrackId.count(mctrackid) == 0)
189 return fMCIdIdealTrackId[mctrackid];
195 PndTrackingQualityRecoInfo GetRecoInfoFromRecoTrackTimeBased(FairLink recoFairLink, Int_t mctrackId, FairLink mctrackFairLink);
201 virtual void FillMapTrackQualifikation();
202 Bool_t IsBetterTrackExisting(Int_t &mcIndex,
int quality);
204 Int_t GetSumOfAllValidMCHits(FairMultiLinkedData *trackData);
206 virtual Int_t AnalyseTrackInfo(std::map<TString, FairMultiLinkedData> &trackInfo, Int_t trackId);
208 FairLink AnalyseTrackInfoTimeBased(std::map<TString, FairMultiLinkedData> &trackInfo, FairLink trackId);
209 virtual void CalcEfficiencies(Int_t mostProbableTrack, std::map<TString, FairMultiLinkedData> &trackInfo);
210 virtual void CalcEfficienciesTimeBased(FairLink mostProbableTrackFairLink, std::map<TString, FairMultiLinkedData> &trackInfo);
212 GetMCInfoForBranch(TString branchName,
PndTrackCand *trackCand);
213 std::map<TString, FairMultiLinkedData>
218 FairRootManager *ioman;
220 TString fTrackBranchName;
221 TString fIdealTrackName;
222 Bool_t fPndTrackOrTrackCand;
223 std::string fPossibleTrackName;
225 Bool_t fCleanFunctor;
228 Bool_t fUseCorrectedSkewedHits;
229 Bool_t fRunTimeBased;
232 std::vector<TString> fBranchNames;
233 std::map<Int_t, Int_t> fTrackIdMCId;
234 std::map<Int_t, Int_t> fMCIdTrackId;
235 std::map<Int_t, Int_t> fMCIdIdealTrackId;
239 std::map<FairLink, FairLink> fTimeBasedTrackIdMCId;
240 std::map<FairLink, FairLink> fTimeBasedMCIdTrackId;
241 std::map<FairLink, FairLink> fTimeBasedMCIdIdealTrackId;
242 FairMultiLinkedData linksMCTrack;
244 std::map<Int_t, Int_t> fMCTrackFound;
245 std::map<FairLink, Int_t> fTimeBasedMCTrackFound;
247 std::map<Int_t, Int_t> fMapTrackMCStatus;
248 std::map<FairLink, Int_t> fTimeBasedMapTrackMCStatus;
250 std::map<Int_t, Int_t> fMapTrackQualification;
251 std::map<FairLink, Int_t> fTimeBasedMapTrackQualification;
253 std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>> fMapEfficiencies;
254 std::map<FairLink, std::map<TString, std::pair<Double_t, Int_t>>> fMapEfficienciesTimeBased;
257 std::map<Int_t, Double_t> fMapPResolution;
258 std::map<Int_t, TVector3> fMapP;
259 std::map<Int_t, Double_t> fMapPtResolution;
260 std::map<Int_t, Double_t> fMapPt;
261 std::map<Int_t, Double_t> fMapPResolutionRel;
262 std::map<Int_t, Double_t> fMapPtResolutionRel;
263 std::map<Int_t, Double_t> fMapPlResolution;
264 std::map<Int_t, Double_t> fMapPl;
265 std::map<Int_t, Double_t> fMapPlResolutionRel;
268 std::map<FairLink, Double_t> fTimeBasedMapPResolution;
269 std::map<FairLink, TVector3> fTimeBasedMapP;
270 std::map<FairLink, Double_t> fTimeBasedMapPtResolution;
271 std::map<FairLink, Double_t> fTimeBasedMapPt;
272 std::map<FairLink, Double_t> fTimeBasedMapPResolutionRel;
273 std::map<FairLink, Double_t> fTimeBasedMapPtResolutionRel;
274 std::map<FairLink, Double_t> fTimeBasedMapPlResolution;
275 std::map<FairLink, Double_t> fTimeBasedMapPl;
276 std::map<FairLink, Double_t> fTimeBasedMapPlResolutionRel;
278 TClonesArray *fTrack;
279 TClonesArray *fMCTrack;
280 TClonesArray *fIdealTrack;
281 TClonesArray *fTrackCand;
282 TClonesArray *fIdealTrackCand;
285 std::vector<double> fEventPurityVector;
287 std::map<int, int> fMapHitIdTimesUsedInEvent;
288 std::map<int, int> fMapHitIdTimesUsedInTrack;
std::map< FairLink, Double_t > GetTimeBasedPtResolution()
std::map< Int_t, Int_t > GetMCTrackFound()
std::map< FairLink, TVector3 > GetTimeBasedP()
static const int kMcAtLeastThreeSec
std::map< Int_t, Double_t > GetPlResolution()
static const int kLessThanThreePrim
void SetHitsBranchNames(std::vector< TString > names)
static const int kPossiblePrim
static const int kAtLeastThreeSec
std::map< Int_t, Double_t > GetPResolution()
std::map< Int_t, Double_t > GetPResolutionRel()
std::map< FairLink, Double_t > GetTimeBasedPt()
static const int kMcPossibleSec
static const int kPartiallyPure
void SetRunTimeBased(bool runTimeBased)
std::map< FairLink, Double_t > GetTimeBasedPlResolution()
void AddHitsBranchName(TString name)
Adds branch names of detector data which should be taken into account in the analysis.
std::map< FairLink, Int_t > GetTrackMCStatusTimeBased()
static std::string QualityNumberToString(int qNumber)
static const int kPossibleSec
static const int kPartiallyImpure
std::map< FairLink, Int_t > GetMCTrackFoundTimeBased()
FairLink GetIdealTrackFairLinkFromMCTrackFairLink(FairLink mctrackFairLink)
std::map< Int_t, Int_t > GetTrackMCStatus()
static const int kAtLeastThreePrim
std::map< Int_t, TVector3 > GetP()
std::map< Int_t, Double_t > GetPt()
std::map< FairLink, Double_t > GetTimeBasedPlResolutionRel()
Holding statically callable quality numbers.
std::map< Int_t, Double_t > GetPlResolutionRel()
std::map< Int_t, Double_t > GetPtResolution()
void SetVerbose(Int_t val)
static const int kMcLessThanThreePrim
static const int kMcAllTracksWithHits
std::map< Int_t, Int_t > GetTrackQualification()
std::map< Int_t, std::map< TString, std::pair< Double_t, Int_t > > > GetEfficiencies()
std::vector< double > GetEventPurityVector()
std::map< FairLink, Double_t > GetTimeBasedPtResolutionRel()
static const int kMcAllTracks
static const int kFullyImpure
Int_t GetIdealTrackIdFromMCTrackId(int mctrackid)
static const int kMcAtLeastThreePrim
std::map< FairLink, Double_t > GetTimeBasedPResolutionRel()
std::map< Int_t, Double_t > GetPtResolutionRel()
std::map< FairLink, Int_t > GetCloneInfoforMCTrack()
std::map< Int_t, Double_t > GetPl()
std::map< FairLink, Double_t > GetTimeBasedPl()
static const int kMcPossiblePrim
std::map< FairLink, Double_t > GetTimeBasedPResolution()
std::map< FairLink, std::map< TString, std::pair< Double_t, Int_t > > > GetEfficienciesTimeBased()
static const int kFullyPure
static const int kNotFound
std::map< FairLink, Int_t > GetTrackQualificationTimeBased()
Int_t GetIdealTrackIdFromRecoTrackId(int trackid)
std::map< Int_t, Int_t > GetTrackIdMCId()