]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG1/TPC/AliPerformancePtCalibMC.h
Last bunch of tiny changes in the online rec.C.
[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;
22class TList;
23
24class AliESDVertex;
25class AliESDtrack;
26class AliMCEvent;
27class AliStack;
28class AliTrackReference;
29class AliESDEvent;
30class AliESDfriend;
31class AliESDfriendTrack;
acb9d358 32class AliMCParticle;
33class AliMCInfoCuts;
34class AliRecInfoCuts;
35class AliESDtrackCuts;
4060dd2d 36class AliPhysicsSelection;
acb9d358 37
4060dd2d 38#include "AliTriggerAnalysis.h"
39#include "THnSparse.h"
acb9d358 40#include "AliPerformanceObject.h"
41
42class AliPerformancePtCalibMC : public AliPerformanceObject {
ba06aaec 43public:
44 AliPerformancePtCalibMC();
4060dd2d 45 AliPerformancePtCalibMC(const char *name, const char *title);
acb9d358 46 virtual ~AliPerformancePtCalibMC() ;
47
ba06aaec 48 // Init data members
49 virtual void Init();
acb9d358 50
ba06aaec 51 // Execute analysis
52 virtual void Exec(AliMCEvent* const mcEvent, AliESDEvent *const esdEvent, AliESDfriend *const esdFriend, const Bool_t bUseMC, const Bool_t bUseESDfriend);
acb9d358 53
ba06aaec 54 // Merge output objects (needed by PROOF)
55 virtual Long64_t Merge(TCollection* const list);
acb9d358 56
ba06aaec 57 // Analyse output histograms
58 virtual void Analyse();
acb9d358 59
ba06aaec 60 // Get analysis folder
61 virtual TFolder* GetAnalysisFolder() const {return fAnalysisFolder;}
acb9d358 62
ba06aaec 63 // Options for track cuts
4060dd2d 64
ba06aaec 65 void SetReadTPCTracks(const Bool_t readTPC) {fOptTPC = readTPC;}//read only ESD tracks
ba06aaec 66 void SetEtaRange(const Double_t eta) {fEtaAcceptance = eta ;}//sets eta window
4060dd2d 67
68 void SetAliESDtrackCuts( AliESDtrackCuts* esdTrackCuts) { fESDTrackCuts = esdTrackCuts;fESDcuts=kTRUE;}//neu
69 void SetPhysicsTriggerSelection(AliPhysicsSelection* const selection) { fPhysicsSelection = selection; }
70 void SetTrigger(const AliTriggerAnalysis::Trigger trigger) { fTrigger = trigger; fPhysSel=kTRUE;}
71
ba06aaec 72 //user defined shift in charge/pt
4060dd2d 73 void SetPtShift(const Double_t shiftVal); //sets user defined shift in charge/pt
acb9d358 74
4060dd2d 75 // setters for analysis with AliPerformancePtCalibMC::Analyse()
76 void SetProjBinsPhi(const Double_t *pBins,const Int_t sizep,const Double_t minTheta, const Double_t maxTheta);// set phi bins for projection and theta range selection (rad)
77 void SetProjBinsTheta(const Double_t *tBins, const Int_t sizet,const Double_t minPhi, const Double_t maxPhi);// set theta bins for projection and phi range selection (rad)
ba06aaec 78 void SetMakeFitOption(const Bool_t setGausFit, const Double_t exclusionR,const Double_t fitR );// set fit options
4060dd2d 79 void SetDoRebin(const Int_t rebin){if(rebin) {fDoRebin = kTRUE; fRebin = rebin;}}
80 void SetAnaMCOff() {fAnaMC = kFALSE;} // switch analysis of MC true tracks off
ba06aaec 81 const TList *GetHistoList() {return fList;} // get list of histograms
acb9d358 82
83
ba06aaec 84 // Create folder for analysed histograms
85 TFolder *CreateFolder(TString folder = "folderPtCalib",TString title = "Analysed PtCalib histograms");
acb9d358 86
ba06aaec 87 // Export objects to folder
88 TFolder *ExportToFolder(TObjArray * array=0);
acb9d358 89
ba06aaec 90 // Selection cuts
91 void SetAliRecInfoCuts(AliRecInfoCuts* const cuts=0) {fCutsRC = cuts;}
92 void SetAliMCInfoCuts(AliMCInfoCuts* const cuts=0) {fCutsMC = cuts;}
4060dd2d 93 AliPhysicsSelection* GetPhysicsTriggerSelection() const { return fPhysicsSelection; }
94 AliTriggerAnalysis::Trigger GetTrigger() const { return fTrigger; }
acb9d358 95
ba06aaec 96 AliRecInfoCuts* GetAliRecInfoCuts() const {return fCutsRC;}
97 AliMCInfoCuts* GetAliMCInfoCuts() const {return fCutsMC;}
acb9d358 98
99protected:
4060dd2d 100 // variables for fitting in Analyse() function
101 Double_t fThetaBins[100];// array of theta bins for projection of charge/pt vs theta
102 Double_t fPhiBins[100]; // array of phi bins for projection of charge/pt vs theta
103
ba06aaec 104 Int_t fNThetaBins;// sets number of theta bins
105 Int_t fNPhiBins ;// sets number of phi bins
4060dd2d 106 Double_t fMaxPhi;// max phi for 2D projection on theta and charge/pt axis
107 Double_t fMinPhi;// min phi for 2D projection on theta and charge/pt axis
108 Double_t fMaxTheta;// max theta for 2D projection on phi and charge/pt axis
109 Double_t fMinTheta;// min theta for 2D projection on phi and charge/pt axis
ba06aaec 110 Double_t fRange;// sets fit range
111 Double_t fExclRange ;// sets range of rejection of points around 0
112 Bool_t fFitGaus ;// flag for usage of gaussian fit function
4060dd2d 113 Bool_t fDoRebin;// flag for rebin 1D histos before fitting
114 Int_t fRebin;// number of bins for rebin
ba06aaec 115 Bool_t fAnaMC;// flag for analysis of MC tracks
acb9d358 116
117
ba06aaec 118private:
4060dd2d 119 // option for user defined shift in charge/pt
ba06aaec 120 Bool_t fShift;//flag for shift in charge/pt
121 Double_t fDeltaInvP;// shift value of charge/pt
122
123 //options for cuts
124 Bool_t fOptTPC;// flag for reading of TPC tracks in Exec
125 Bool_t fESDcuts;//flag for usage of esd track cuts
4060dd2d 126 Bool_t fPhysSel;// flag for usage of AliPhysicsselction
ba06aaec 127
4060dd2d 128 //ESD track cut values
ba06aaec 129 Double_t fEtaAcceptance;//sets value of eta window
4060dd2d 130 AliTriggerAnalysis::Trigger fTrigger; // trigger definition MB1, MB2 ...
131 AliPhysicsSelection* fPhysicsSelection; // physics trigger selection class
ba06aaec 132 AliRecInfoCuts* fCutsRC; // selection cuts for reconstructed tracks
133 AliMCInfoCuts* fCutsMC; // selection cuts for MC tracks
acb9d358 134
135
ba06aaec 136 TList *fList;// list of histograms
4060dd2d 137
138 // histograms and THnSparse
139 THnSparseF *fHistInvPtPtThetaPhi;// is filled with charge/pt, pt, theta, phi for ESD or TPC
ba06aaec 140
4060dd2d 141 TH1F *fHistPtShift0;//if shift in charge/pt is set by user, this histogram shows pt wihtout shift
ba06aaec 142 TH1F *fHistPrimaryVertexPosX;// primary vertex position x
143 TH1F *fHistPrimaryVertexPosY;// primary vertex position y
144 TH1F *fHistPrimaryVertexPosZ;// primary vertex position z
145 TH1F *fHistTrackMultiplicity; // track multiplicity
146 TH1F *fHistTrackMultiplicityCuts;//track multiplicity after all cuts are applied
147
148 TH2F *fHistTPCMomentaPosP;//TPC p vs global esd track p for positive tracks
149 TH2F *fHistTPCMomentaNegP;//TPC p vs global esd track p for negative tracks
150 TH2F *fHistTPCMomentaPosPt;//TPC pt vs global esd track p positive tracks
151 TH2F *fHistTPCMomentaNegPt;//TPC pt vs global esd track p for negative tracks
4060dd2d 152
153 THnSparseF *fHistInvPtPtThetaPhiMC;// is filled with charge/pt, pt, theta, phi for MC true
154
155 TH2F *fHistInvPtMCESD;// charge/pt of ESD vs MC
156 TH2F *fHistInvPtMCTPC;// charge/pt of TPC vs MC
ba06aaec 157 TH2F *fHistPtMCESD;//pt of ESD vs MC
158 TH2F *fHistPtMCTPC;//pt of TPC vs MC
159 TH2F *fHistMomresMCESD; //(pt ESD - pt MC)/ptMC vs pt MC
160 TH2F *fHistMomresMCTPC; //(pt TPC - pt MC)/ptMC vs pt MC
4060dd2d 161 TH2F *fHistTPCMomentaPosInvPtMC;//TPC-MC of 1/pt vs global ESD-MC of charge/pt of positive tracks
162 TH2F *fHistTPCMomentaNegInvPtMC;//TPC-MC of 1/pt vs global ESD-MC of charge/pt of negative tracks
ba06aaec 163 TH2F *fHistTPCMomentaPosPtMC;//TPC-MC of pt vs global ESD-MC of pt of positive tracks
164 TH2F *fHistTPCMomentaNegPtMC;//TPC-MC of pt vs global ESD-MC of pt of negative tracks
acb9d358 165
4060dd2d 166 TH1F *fHistESDMomentaPosInvPtMC;//ESD-MC of charge/pt of positive tracks
167 TH1F *fHistESDMomentaNegInvPtMC;//ESD-MC of charge/pt of negative tracks
ba06aaec 168 TH1F *fHistESDMomentaPosPtMC;//ESD-MC of pt of positive tracks
169 TH1F *fHistESDMomentaNegPtMC;//ESD-MC of pt of negative tracks
170
171 TH1F *fHistUserPtShift;// shows the shift value if set by user
acb9d358 172
ba06aaec 173 AliESDtrackCuts* fESDTrackCuts;// esd track cuts
acb9d358 174
ba06aaec 175 // analysis folder
176 TFolder *fAnalysisFolder; // folder for analysed histograms
acb9d358 177
ba06aaec 178 AliPerformancePtCalibMC(const AliPerformancePtCalibMC&); // not implemented
179 AliPerformancePtCalibMC& operator=(const AliPerformancePtCalibMC&); // not implemented
acb9d358 180
ba06aaec 181 ClassDef(AliPerformancePtCalibMC, 1);
acb9d358 182};
183
184#endif