//---------------------------------------------------------------------------- // Implementation of the KFParticle class // . // @author I.Kisel, I.Kulakov, M.Zyzak // @version 1.0 // @since 20.08.13 // // // -= Copyright © ALICE HLT and CBM L1 Groups =- //____________________________________________________________________________ #ifdef DO_TPCCATRACKER_EFF_PERFORMANCE #ifndef KFTOPOPERFORMANCE_H #define KFTOPOPERFORMANCE_H #include "KFParticlePerformanceBase.h" #include "KFMCVertex.h" #include "KFMCTrack.h" #include #include #include #include "KFPartMatch.h" #include "KFMCParticle.h" class AliHLTTPCCAGBTracker; class TObject; class TParticle; class KFParticleTopoReconstructor; class KFPHistogram; class TDirectory; class TH1D; class TH2D; class TH3D; class TProfile; class TFile; /** * @class KFTopoPerformance. Don't use w\o GlobalPerformance */ class KFTopoPerformance: public KFParticlePerformanceBase { public: KFTopoPerformance(); virtual ~KFTopoPerformance(); #ifdef KFPWITHTRACKER virtual void SetNewEvent( const AliHLTTPCCAGBTracker * const Tracker, AliHLTResizableArray *hitLabels, AliHLTResizableArray *mcTracks, AliHLTResizableArray *localMCPoints); #endif void SetTopoReconstructor( const KFParticleTopoReconstructor * const TopoReconstructor ); // use together with SetNewEvent !!! const KFParticleTopoReconstructor * GetTopoReconstructor() const { return fTopoReconstructor; } /// Efficiency // Check if MC track is reconstructable. Calculate set of MC track. Etc. virtual void CheckMCTracks(); // fill mcData. // Find reco-MCTracks correspondence virtual void MatchTracks(); // fill recoData. // Calculate efficiencies virtual void EfficiencyPerformance(){}; // current don't use eff virtual void PrintEfficiencyStatistic(){}; // current don't use eff virtual void PrintEfficiency() {}; /// Histograms // virtual void CreateHistos(string histoDir); virtual void FillHistos(); void FillHistos(const KFPHistogram* histograms); void FillMCHistos(); void AddV0Histos(); void SetTrackMatch(const vector& trackMatch) { fTrackMatch = trackMatch;} void SetMCTracks(const vector& mcTracks) { vMCTracks = mcTracks; } const KFPartEfficiencies GetEfficiency() const { return fParteff; } void SetPrintEffFrequency(int n) { fPrintEffFrequency = n;} const vector GetPrimVertices() { return fPrimVertices; } const vector& MCParticles() { return vMCParticles; } const vector& ParticlesMatch() { return RtoMCParticleId; } const vector& GetMCtoRPVId() { return MCtoRPVId; } const vector& GetRtoMCPVId() { return RtoMCPVId; } const KFMCTrack& GetMCTrack(const int iRecoTrack) { int iMCTrack = 0; if(RtoMCParticleId[iRecoTrack].IsMatched()) iMCTrack = RtoMCParticleId[iRecoTrack].GetBestMatch(); return vMCTracks[iMCTrack]; } private: const KFTopoPerformance& operator = (const KFTopoPerformance&); KFTopoPerformance(const KFTopoPerformance&); void GetMCParticles(); void MatchParticles(); void MatchPV(); void CalculateEfficiency(); void CalculatePVEfficiency(); void FindReconstructableMCParticles(); void CheckMCParticleIsReconstructable(KFMCParticle &part); void FindReconstructableMCVertices(); void FillParticleParameters(KFParticle& TempPart, int iParticle, int iP, int iPV, TH1F* histoParameters[4][KFPartEfficiencies::nParticles][nHistoPartParam], TH2F* histoParameters2D[4][KFPartEfficiencies::nParticles][nHistoPartParam2D], TH3F* histoParameters3D[1][KFPartEfficiencies::nParticles][nHistoPartParam3D], TH1F* histoFit[KFPartEfficiencies::nParticles][nFitQA] = 0, TH1F* histoFitDaughtersQA[KFPartEfficiencies::nParticles][nFitQA] = 0, TH1F* histoDSToParticleQA[KFPartEfficiencies::nParticles][nDSToParticleQA] = 0, vector* multiplicities = 0); const KFParticleTopoReconstructor *fTopoReconstructor; vector fPrimVertices; // primary vertex positions (currently only one vertex is implemented) vector fMCTrackToMCPVMatch; // match between MC tracks and PV vector fPVPurity; vector fPVTracksRate[4]; //0 - ghost tracks, 1 - from trigger PV, 2 - from pileup, 3 - from physics bg vector fNCorrectPVTracks; vector fTrackMatch; vector vMCTracks; // MC particles vector vMCParticles; // MC particles vector fNeutralIndex; vector MCtoRParticleId; // array for match MC and reco particles vector RtoMCParticleId; vector MCtoRPVId; // array for match MC and reco PV vector RtoMCPVId; int fPrintEffFrequency; KFPartEfficiencies fPartInfo; }; #endif #endif //DO_TPCCATRACKER_EFF_PERFORMANCE