]>
Commit | Line | Data |
---|---|---|
acb9d358 | 1 | #ifndef ALIPERFORMANCEPTCALIBMC_H |
2 | #define ALIPERFORMANCEPTCALIBMC_H | |
ba06aaec | 3 | //---------------------------------------------------------------------------------------------------- |
4 | // Class to study systematic shifts in pt and charge/pt respectively. Furthermore a comparison between | |
5 | // either ESD or TPC and MC track momenta is included. | |
6 | // Track cuts and a user defined shift in 1/pt can be switched on and off by user. | |
7 | // | |
8 | // Analysis with class AliPerfAnalyzeInvPt via AliPerformancePtCalibMC::Analyse().: | |
9 | // Projection of 1/pt vs theta and vs phi resp. Histograms will be fitted with either | |
10 | // polynomial or gaussian fit function to extract minimum position of 1/pt. | |
11 | // Fit options and theta, phi bins can be set by user. | |
12 | // Attention: use the Set* functions of AliPerformancePtCalibMC when running AliPerformancePtCalibMC::Analyse(). | |
13 | // | |
14 | // Author: S. Schuchmann 11/13/2009 | |
15 | //---------------------------------------------------------------------------------------------------- | |
acb9d358 | 16 | |
17 | class TString; | |
18 | class TNamed; | |
19 | class TCanvas; | |
20 | class TH1F; | |
21 | class TH2F; | |
ba06aaec | 22 | class TH3F; |
acb9d358 | 23 | class TList; |
24 | ||
25 | class AliESDVertex; | |
26 | class AliESDtrack; | |
27 | class AliMCEvent; | |
28 | class AliStack; | |
29 | class AliTrackReference; | |
30 | class AliESDEvent; | |
31 | class AliESDfriend; | |
32 | class AliESDfriendTrack; | |
33 | class AliMCEvent; | |
34 | class AliMCParticle; | |
35 | class AliMCInfoCuts; | |
36 | class AliRecInfoCuts; | |
37 | class AliESDtrackCuts; | |
38 | ||
39 | #include "AliPerformanceObject.h" | |
40 | ||
41 | class AliPerformancePtCalibMC : public AliPerformanceObject { | |
ba06aaec | 42 | public: |
43 | AliPerformancePtCalibMC(); | |
44 | AliPerformancePtCalibMC(const char *name, const char *title);//, Int_t analysisMode, Bool_t hptGenerator); | |
acb9d358 | 45 | virtual ~AliPerformancePtCalibMC() ; |
46 | ||
ba06aaec | 47 | // Init data members |
48 | virtual void Init(); | |
acb9d358 | 49 | |
ba06aaec | 50 | // Execute analysis |
51 | virtual void Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend); | |
acb9d358 | 52 | |
ba06aaec | 53 | // Merge output objects (needed by PROOF) |
54 | virtual Long64_t Merge(TCollection* const list); | |
acb9d358 | 55 | |
ba06aaec | 56 | // Analyse output histograms |
57 | virtual void Analyse(); | |
acb9d358 | 58 | |
ba06aaec | 59 | // Get analysis folder |
60 | virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;} | |
acb9d358 | 61 | |
ba06aaec | 62 | // Options for track cuts |
4c10f566 | 63 | Bool_t AddTPCcuts(const AliESDtrack *esdTrack);// applies TPC cuts |
64 | Bool_t AddITScuts(const AliESDtrack *esdTrack);// applies ITS cuts | |
65 | Bool_t AddDCAcuts(const AliESDtrack *esdTrack);// applies DCA cuts | |
ba06aaec | 66 | |
67 | void SetReadTPCTracks(const Bool_t readTPC) {fOptTPC = readTPC;}//read only ESD tracks | |
68 | void SetTPCRefit(const Bool_t refitTPC) {fRefitTPC = refitTPC;} //switch TPC refit flag on/off | |
69 | void SetITSRefit(const Bool_t refitITS) {fRefitITS = refitITS;} //switch ITS refit flag on/off | |
70 | void SetESDCuts(const Bool_t esdCuts) {fESDcuts = esdCuts;} //switch ESD track cuts on/off | |
71 | void SetDCACuts(const Bool_t dcaCut) {fDCAcut = dcaCut;} //switch DCA cut off | |
72 | void SetAcceptKinkDaughters(const Bool_t kink) {fAcceptKinkDaughters = kink;} //switch accept kink daughters on/off | |
73 | void SetRequireSigmaToVertex(const Bool_t sigmaTo) {fRequireSigmaToVertex = sigmaTo;}//switch require SigmaToVertex on/off | |
74 | void SetfDCAToVertex2D(const Bool_t dcaTo) {fDCAToVertex2D = dcaTo;}//switch DCA to vertex2D on/off | |
75 | void SetEtaRange(const Double_t eta) {fEtaAcceptance = eta ;}//sets eta window | |
76 | void SetESDcutValues(const Double_t * esdCutValues);// set ESD track cut values as array of size 6 according to: | |
77 | // fMinPt = esdCutValues[0]; | |
78 | // fMaxPt = esdCutValues[1]; | |
79 | // fMinNClustersTPC = esdCutValues[2]; | |
80 | // fMaxChi2PerClusterTPC = esdCutValues[3]; | |
81 | // fMaxDCAtoVertexXY = esdCutValues[4]; | |
82 | // fMaxDCAtoVertexZ = esdCutValues[5]; | |
83 | ||
84 | //user defined shift in charge/pt | |
85 | void SetPtShift(const Double_t shiftVal); //shift in 1/pt | |
acb9d358 | 86 | |
ba06aaec | 87 | |
88 | // for analysis with AliPerformancePtCalibMC::Analyse() | |
89 | void SetProjBinsPhi(const Double_t *pBins,Int_t sizep);// set phi bins and nr of phi bins for projection | |
90 | void SetProjBinsTheta(const Double_t *tBins, Int_t sizet);// set theta bins and nr of phi bins for projection | |
91 | void SetMakeFitOption(const Bool_t setGausFit, const Double_t exclusionR,const Double_t fitR );// set fit options | |
92 | void SetAnaMCOff() {fAnaMC = kFALSE;} // switch analysis of MC tracks off | |
93 | const TList *GetHistoList() {return fList;} // get list of histograms | |
acb9d358 | 94 | |
95 | ||
ba06aaec | 96 | // Create folder for analysed histograms |
97 | TFolder *CreateFolder(TString folder = "folderPtCalib",TString title = "Analysed PtCalib histograms"); | |
acb9d358 | 98 | |
ba06aaec | 99 | // Export objects to folder |
100 | TFolder *ExportToFolder(TObjArray * array=0); | |
acb9d358 | 101 | |
ba06aaec | 102 | // Selection cuts |
103 | void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;} | |
104 | void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;} | |
acb9d358 | 105 | |
106 | ||
ba06aaec | 107 | AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;} |
108 | AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;} | |
acb9d358 | 109 | |
110 | protected: | |
111 | ||
ba06aaec | 112 | Double_t fThetaBins[100];// array of theta bins for projection of 1/pt vs theta |
113 | Double_t fPhiBins[100]; // array of phi bins for projection of 1/pt vs theta | |
acb9d358 | 114 | |
ba06aaec | 115 | Int_t fNThetaBins;// sets number of theta bins |
116 | Int_t fNPhiBins ;// sets number of phi bins | |
117 | Double_t fRange;// sets fit range | |
118 | Double_t fExclRange ;// sets range of rejection of points around 0 | |
119 | Bool_t fFitGaus ;// flag for usage of gaussian fit function | |
120 | Bool_t fAnaMC;// flag for analysis of MC tracks | |
acb9d358 | 121 | |
122 | ||
ba06aaec | 123 | private: |
124 | Bool_t fShift;//flag for shift in charge/pt | |
125 | Double_t fDeltaInvP;// shift value of charge/pt | |
126 | ||
127 | //options for cuts | |
128 | Bool_t fOptTPC;// flag for reading of TPC tracks in Exec | |
129 | Bool_t fESDcuts;//flag for usage of esd track cuts | |
130 | Bool_t fRefitTPC;//flag for TPC refit | |
131 | Bool_t fRefitITS;// flag for ITS refit | |
132 | Bool_t fDCAcut;//flag for usage of DCA cut | |
133 | ||
134 | Double_t fEtaAcceptance;//sets value of eta window | |
135 | Double_t fMinPt;//sets minimum pt for esd track cuts | |
136 | Double_t fMaxPt;//sets maximum pt for esd track cuts | |
137 | Double_t fMinNClustersTPC;// set minimum number of clusters in TPC for esd track cuts | |
138 | Double_t fMaxChi2PerClusterTPC;//set maximum of chi2 per cluster in TPC for esd track cuts | |
139 | Double_t fMaxDCAtoVertexXY;//set maximum of dca to vertex in xy direction for esd track cuts | |
140 | Double_t fMaxDCAtoVertexZ;//set maximum of dca to vertex in z for esd track cuts | |
141 | ||
142 | Bool_t fAcceptKinkDaughters;// flag for acception of kink daughters | |
143 | Bool_t fRequireSigmaToVertex;// flag for requirering sigma to vertex | |
144 | Bool_t fDCAToVertex2D;//flag for dca to vertex in 2d cut | |
145 | ||
146 | AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks | |
147 | AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks | |
acb9d358 | 148 | |
149 | ||
ba06aaec | 150 | TList *fList;// list of histograms |
151 | TH2F *fHistInvPtTheta;//theta vs charge/pt | |
152 | TH2F *fHistInvPtPhi;//phi vs charge/pt | |
153 | TH2F *fHistPtTheta;//theta vs pt | |
154 | TH2F *fHistPtPhi;//phi vs pt | |
155 | ||
156 | TH1F *fHistPtShift0;//if shift in 1/pt is set by user, this histogram shows pt wihtout shift | |
157 | TH1F *fHistPrimaryVertexPosX;// primary vertex position x | |
158 | TH1F *fHistPrimaryVertexPosY;// primary vertex position y | |
159 | TH1F *fHistPrimaryVertexPosZ;// primary vertex position z | |
160 | TH1F *fHistTrackMultiplicity; // track multiplicity | |
161 | TH1F *fHistTrackMultiplicityCuts;//track multiplicity after all cuts are applied | |
162 | ||
163 | TH2F *fHistTPCMomentaPosP;//TPC p vs global esd track p for positive tracks | |
164 | TH2F *fHistTPCMomentaNegP;//TPC p vs global esd track p for negative tracks | |
165 | TH2F *fHistTPCMomentaPosPt;//TPC pt vs global esd track p positive tracks | |
166 | TH2F *fHistTPCMomentaNegPt;//TPC pt vs global esd track p for negative tracks | |
acb9d358 | 167 | |
ba06aaec | 168 | TH2F *fHistInvPtThetaMC;//theta vs charge/pt for MC tracks |
169 | TH2F *fHistInvPtPhiMC;//phi vs charge/pt for MC tracks | |
170 | TH2F *fHistPtThetaMC;//theta vs pt for MC tracks | |
171 | TH2F *fHistPtPhiMC; //phi vs pt for MC tracks | |
172 | TH2F *fHistInvPtMCESD;// 1/pt of ESD vs MC | |
173 | TH2F *fHistInvPtMCTPC;// 1/pt of TPC vs MC | |
174 | TH2F *fHistPtMCESD;//pt of ESD vs MC | |
175 | TH2F *fHistPtMCTPC;//pt of TPC vs MC | |
176 | TH2F *fHistMomresMCESD; //(pt ESD - pt MC)/ptMC vs pt MC | |
177 | TH2F *fHistMomresMCTPC; //(pt TPC - pt MC)/ptMC vs pt MC | |
178 | TH2F *fHistTPCMomentaPosInvPtMC;//TPC-MC of 1/pt vs global ESD-MC of 1/pt of positive tracks | |
179 | TH2F *fHistTPCMomentaNegInvPtMC;//TPC-MC of 1/pt vs global ESD-MC of 1/pt of negative tracks | |
180 | TH2F *fHistTPCMomentaPosPtMC;//TPC-MC of pt vs global ESD-MC of pt of positive tracks | |
181 | TH2F *fHistTPCMomentaNegPtMC;//TPC-MC of pt vs global ESD-MC of pt of negative tracks | |
acb9d358 | 182 | |
ba06aaec | 183 | TH1F *fHistESDMomentaPosInvPtMC;//ESD-MC of 1/pt of positive tracks |
184 | TH1F *fHistESDMomentaNegInvPtMC;//ESD-MC of 1/pt of negative tracks | |
185 | TH1F *fHistESDMomentaPosPtMC;//ESD-MC of pt of positive tracks | |
186 | TH1F *fHistESDMomentaNegPtMC;//ESD-MC of pt of negative tracks | |
187 | ||
188 | TH1F *fHistUserPtShift;// shows the shift value if set by user | |
acb9d358 | 189 | |
ba06aaec | 190 | AliESDtrackCuts* fESDTrackCuts;// esd track cuts |
acb9d358 | 191 | |
ba06aaec | 192 | // analysis folder |
193 | TFolder *fAnalysisFolder; // folder for analysed histograms | |
acb9d358 | 194 | |
ba06aaec | 195 | AliPerformancePtCalibMC(const AliPerformancePtCalibMC&); // not implemented |
196 | AliPerformancePtCalibMC& operator=(const AliPerformancePtCalibMC&); // not implemented | |
acb9d358 | 197 | |
ba06aaec | 198 | ClassDef(AliPerformancePtCalibMC, 1); |
acb9d358 | 199 | }; |
200 | ||
201 | #endif |