8 #ifndef PndTrackingQATimebased_H_ 9 #define PndTrackingQATimebased_H_ 11 #include "FairMultiLinkedData.h" 12 #include "FairRootManager.h" 22 #include <TClonesArray.h> 71 return "PossiblePrimary";
75 return "AtLeastThreeSec";
77 return "AtLeastThreePrim";
79 return "LessThanThreePrim";
81 return "McPossibleSec";
83 return "McAtLeastThreeSec";
85 return "McAtLeastThreePrim";
87 return "McLessThanThreePrim";
89 return "McAllTracksWithHits";
93 return "PartiallyImpure";
95 return "PartiallyPure";
108 return std::to_string(qNumber);
126 fSecondaryDefinitionPCAXY = kTRUE;
130 void AnalyseEvent(TClonesArray *recoTrackInfo);
133 Int_t GetNIdealHits(FairMultiLinkedData &track, TString branchName);
140 std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>>
GetEfficiencies() {
return fMapEfficiencies; }
145 std::map<Int_t, TVector3>
GetP() {
return fMapP; }
147 std::map<Int_t, Double_t>
GetPt() {
return fMapPt; }
149 std::map<Int_t, Double_t>
GetPl() {
return fMapPl; }
169 void PrintTrackDataSummary(FairMultiLinkedData &trackData, Bool_t detailedInfo = kFALSE);
170 void PrintTrackDataSummaryCompare(FairMultiLinkedData &recoTrackData, FairMultiLinkedData &idealTrackData);
175 void PrintTrackQualityMap(Bool_t detailedInfo = kFALSE);
176 void PrintTrackMCStatusMap();
177 void PrintTrackInfo(std::map<TString, FairMultiLinkedData> info);
181 if (fMCIdIdealTrackId.count(mctrackid) == 0)
183 return fMCIdIdealTrackId[mctrackid];
189 return fTimeBasedMCIdIdealTrackId[mctrackFairLink];
193 int mctrackid = fTrackIdMCId[trackid];
194 if (fMCIdIdealTrackId.count(mctrackid) == 0)
196 return fMCIdIdealTrackId[mctrackid];
202 PndTrackingQualityRecoInfo GetRecoInfoFromRecoTrackTimeBased(FairLink recoFairLink, Int_t mctrackId, FairLink mctrackFairLink);
208 virtual void FillMapTrackQualifikation();
209 Bool_t IsBetterTrackExisting(Int_t &mcIndex,
int quality);
211 Int_t GetSumOfAllValidMCHits(FairMultiLinkedData *trackData);
213 virtual Int_t AnalyseTrackInfo(std::map<TString, FairMultiLinkedData> &trackInfo, Int_t trackId);
215 FairLink AnalyseTrackInfoTimeBased(std::map<TString, FairMultiLinkedData> &trackInfo, FairLink trackId);
216 virtual void CalcEfficiencies(Int_t mostProbableTrack, std::map<TString, FairMultiLinkedData> &trackInfo);
217 virtual void CalcEfficienciesTimeBased(FairLink mostProbableTrackFairLink, std::map<TString, FairMultiLinkedData> &trackInfo);
219 GetMCInfoForBranch(TString branchName,
PndTrackCand *trackCand);
220 std::map<TString, FairMultiLinkedData>
225 FairRootManager *ioman;
227 TString fTrackBranchName;
228 TString fIdealTrackName;
229 Bool_t fPndTrackOrTrackCand;
230 std::string fPossibleTrackName;
232 Bool_t fCleanFunctor;
235 Bool_t fUseCorrectedSkewedHits;
236 Bool_t fRunTimeBased;
238 bool fSecondaryDefinitionPCAXY;
241 std::vector<TString> fBranchNames;
242 std::map<Int_t, Int_t> fTrackIdMCId;
243 std::map<Int_t, Int_t> fMCIdTrackId;
244 std::map<Int_t, Int_t> fMCIdIdealTrackId;
248 std::map<FairLink, FairLink> fTimeBasedTrackIdMCId;
249 std::map<FairLink, FairLink> fTimeBasedMCIdTrackId;
250 std::map<FairLink, FairLink> fTimeBasedMCIdIdealTrackId;
251 FairMultiLinkedData linksMCTrack;
253 std::map<Int_t, Int_t> fMCTrackFound;
254 std::map<FairLink, Int_t> fTimeBasedMCTrackFound;
256 std::map<Int_t, Int_t> fMapTrackMCStatus;
257 std::map<FairLink, Int_t> fTimeBasedMapTrackMCStatus;
259 std::map<Int_t, Int_t> fMapTrackQualification;
260 std::map<FairLink, Int_t> fTimeBasedMapTrackQualification;
262 std::map<Int_t, std::map<TString, std::pair<Double_t, Int_t>>> fMapEfficiencies;
263 std::map<FairLink, std::map<TString, std::pair<Double_t, Int_t>>> fMapEfficienciesTimeBased;
266 std::map<Int_t, Double_t> fMapPResolution;
267 std::map<Int_t, TVector3> fMapP;
268 std::map<Int_t, Double_t> fMapPtResolution;
269 std::map<Int_t, Double_t> fMapPt;
270 std::map<Int_t, Double_t> fMapPResolutionRel;
271 std::map<Int_t, Double_t> fMapPtResolutionRel;
272 std::map<Int_t, Double_t> fMapPlResolution;
273 std::map<Int_t, Double_t> fMapPl;
274 std::map<Int_t, Double_t> fMapPlResolutionRel;
277 std::map<FairLink, Double_t> fTimeBasedMapPResolution;
278 std::map<FairLink, TVector3> fTimeBasedMapP;
279 std::map<FairLink, Double_t> fTimeBasedMapPtResolution;
280 std::map<FairLink, Double_t> fTimeBasedMapPt;
281 std::map<FairLink, Double_t> fTimeBasedMapPResolutionRel;
282 std::map<FairLink, Double_t> fTimeBasedMapPtResolutionRel;
283 std::map<FairLink, Double_t> fTimeBasedMapPlResolution;
284 std::map<FairLink, Double_t> fTimeBasedMapPl;
285 std::map<FairLink, Double_t> fTimeBasedMapPlResolutionRel;
287 TClonesArray *fTrack;
288 TClonesArray *fMCTrack;
289 TClonesArray *fIdealTrack;
290 TClonesArray *fTrackCand;
291 TClonesArray *fIdealTrackCand;
294 std::vector<double> fEventPurityVector;
296 std::map<int, int> fMapHitIdTimesUsedInEvent;
297 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