BmnRoot
Loading...
Searching...
No Matches
CbmKFParticlesFinderQA.h
Go to the documentation of this file.
1/*
2 *====================================================================
3 *
4 * CBM KF Track Quality
5 *
6 * Authors: M.Zyzak
7 *
8 * e-mail :
9 *
10 *====================================================================
11 *
12 * KF Particles Finder performance
13 *
14 *====================================================================
15 */
16
17#ifndef _CbmKFParticlesFinderQA_h_
18#define _CbmKFParticlesFinderQA_h_
19
20#include "KFMCParticle.h"
21#include "KFParticleMatch.h"
23#include "CbmKFTrErrMCPoints.h"
24#include "FairTask.h"
25#include <vector>
26#include <map>
27#include <cstring>
28
30class TClonesArray;
31class CbmVertex;
32class TDirectory;
33class TH1F;
34class TH2F;
35
36class CbmKFParticlesFinderQA :public FairTask
37{
38 public:
39
40 CbmKFParticlesFinderQA(CbmKFParticlesFinder *pf=0, Int_t iVerbose = 1, int findParticlesMode = 1, int perf = 3,
41 const char *name ="CbmKFParticlesFinderQA",
42 const char *title="Cbm KF Particles Finder QA");
44
45 void SetOutFile(TString outname) {outfileName = outname;}
46 void SetEffFileName(TString effname) {fEfffileName = effname;}
47
48 void SaveParticles(Bool_t b) { fSaveParticles = 1; }
49 void SaveMCParticles(Bool_t b) { fSaveMCParticles = 1; }
50
51 virtual InitStatus ReInit();
52 virtual InitStatus Init();
53 void Exec(Option_t * option);
54 void Finish();
55
56 private:
57
58 void StsHitMatch();
59 void WriteHistos( TObject *obj );
60 void WriteHistosCurFile( TObject *obj );
61 void GetMCParticles();
62 void FindReconstructableMCParticles();
63 void CheckMCParticleIsReconstructable(KFMCParticle &part);
64 void MatchParticles();
65 void PartEffPerformance();
66 void PartHistoPerformance();
67
68 // performance modes and definitions
69 const int fFindParticlesMode;
70 const int fPerformance;
71 const int fMinNStations;
72 const float fMinRecoMom;
73// CbmKFParticlesFinder object
75
76 vector<CbmKFTrErrMCPoints> fMCTrackPoints;
77 vector<KFMCParticle> vMCParticles; // MC particles
78 vector<KFMatchParticles> MCtoRParticleId; // array for match
79 vector<KFMatchParticles> RtoMCParticleId;
80 vector<bool> vIsBkgWithSamePDG;
81// Arrays of points, tracks, etc
82
83 TClonesArray* flistStsPts;
84 TClonesArray* flistMvdPts;
85 TClonesArray* flistMCTracks;
86 TClonesArray* flistStsTracksMatch;
87 TClonesArray* flistStsTracks;
88 TClonesArray* flistStsHits;
89 TClonesArray* flistMvdHits;
90 TClonesArray* flistMvdHitMatches;
91 TClonesArray* flistStsClusters;
92 TClonesArray* flistStsDigi;
93 CbmVertex* fPrimVtx;
94
95// output arrays of particles
96 TClonesArray* fRecParticles; // output array of KF Particles
97 TClonesArray* fMCParticles; // output array of MC Particles
98 TClonesArray* fMatchParticles; // output array of match objects
99
100 Bool_t fSaveParticles;
101 Bool_t fSaveMCParticles;
102
103// Names of files
104 TString outfileName;
105 TString fEfffileName;
106
107 TDirectory* histodir;
108
109 std::vector<int> vStsHitMatch;
110 std::vector<int> vStsPointMatch;
111 std::vector<int> vMvdPointMatch;
112 std::vector<int> vMCTrackMatch;
113
114// efficiencies
115 CbmKFPartEfficiencies fParteff;
116 int fNEvents;
117
118//histos
119 static const int nFitQA = 16;
120 TH1F *hFitDaughtersQA[CbmKFPartEfficiencies::nParticles][nFitQA];
121 TH1F *hFitQA[CbmKFPartEfficiencies::nParticles][nFitQA];
122
123 static const int nHistoPartParam = 13;
124 TH1F *hPartParam[CbmKFPartEfficiencies::nParticles][nHistoPartParam]; // mass, p, pt, Y, decay length, c*tau, chi/ndf, prob, theta, phi, z
125 TH1F *hPartParamBG[CbmKFPartEfficiencies::nParticles][nHistoPartParam];
126 TH1F *hPartParamGhost[CbmKFPartEfficiencies::nParticles][nHistoPartParam];
127// TH1F *hPartParamCorrBG[CbmKFPartEfficiencies::nParticles][nHistoPartParam];
128 TH1F *hPartParamSignal[CbmKFPartEfficiencies::nParticles][nHistoPartParam];
129 static const int nHistoPartParamQA = 3;
130 TH1F *hPartParamQA[CbmKFPartEfficiencies::nParticles][nHistoPartParamQA*2]; // residuals and pulls of these parameters
131
132 static const int nHistoPartParam2D = 1;
133 TH2F *hPartParam2D[CbmKFPartEfficiencies::nParticles][nHistoPartParam2D]; // y-pt,
134 TH2F *hPartParam2DBG[CbmKFPartEfficiencies::nParticles][nHistoPartParam2D];
135 TH2F *hPartParam2DGhost[CbmKFPartEfficiencies::nParticles][nHistoPartParam2D];
136// TH2F *hPartParam2DCorrBG[CbmKFPartEfficiencies::nParticles][nHistoPartParam2D];
137 TH2F *hPartParam2DSignal[CbmKFPartEfficiencies::nParticles][nHistoPartParam2D];
138
139 static const int nHistosPV = 6;
140 TH1F *hPVFitQa[nHistosPV];
141
142 static const int nHistoMotherPdg = 17;
143 std::map<int,int> fMotherPdgToIndex;
144 TH1F *hMotherPdg[nHistoMotherPdg];
145 int GetMotherPdgIndex(int pdg)
146 {
147 std::map<int, int>::iterator it;
148 it=fMotherPdgToIndex.find(pdg);
149 if(it != fMotherPdgToIndex.end()) return it->second;
150 else return -1;
151 }
152
153 static const int nHistosTP = CbmKFPartEfficiencies::nParticles + 1;
154 TH1F *hTrackParameters[nHistosTP];
155
156 ClassDef(CbmKFParticlesFinderQA,1);
157
158 private:
160 void operator=(const CbmKFParticlesFinderQA&);
161};
162
163#endif // _CbmKFParticlesFinderQA_h_
void SetEffFileName(TString effname)
void SetOutFile(TString outname)