]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TPC/AliPerformancePtCalibMC.h
GetOutput(1)
[u/mrichter/AliRoot.git] / PWG1 / TPC / AliPerformancePtCalibMC.h
CommitLineData
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
17class TString;
18class TNamed;
19class TCanvas;
20class TH1F;
21class TH2F;
ba06aaec 22class TH3F;
acb9d358 23class TList;
24
25class AliESDVertex;
26class AliESDtrack;
27class AliMCEvent;
28class AliStack;
29class AliTrackReference;
30class AliESDEvent;
31class AliESDfriend;
32class AliESDfriendTrack;
33class AliMCEvent;
34class AliMCParticle;
35class AliMCInfoCuts;
36class AliRecInfoCuts;
37class AliESDtrackCuts;
38
39#include "AliPerformanceObject.h"
40
41class AliPerformancePtCalibMC : public AliPerformanceObject {
ba06aaec 42public:
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
110protected:
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 123private:
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