2 // Header file for implementation of data analysis aft 900 GeV
4 // Author: A. Pulvirenti
7 #ifndef ALIRSNANALYSISPHI7TEV_H
8 #define ALIRSNANALYSISPHI7TEV_H
10 #include "AliRsnDaughter.h"
11 #include "AliRsnCutESD2010.h"
12 #include "AliAnalysisTaskSE.h"
13 #include "AliRsnTOFT0maker.h"
14 #include "AliESDtrackCuts.h"
29 class AliRsnAnalysisPhi7TeV : public AliAnalysisTaskSE
35 kGoodTracksPrimaryVertex = 0,
36 kGoodSPDPrimaryVertex = 1,
37 kFarTracksPrimaryVertex = 2,
38 kFarSPDPrimaryVertex = 3,
39 kNoGoodPrimaryVertex = 4,
43 AliRsnAnalysisPhi7TeV(const char *name = "Phi7TeV", Bool_t isMC = kFALSE);
44 AliRsnAnalysisPhi7TeV(const AliRsnAnalysisPhi7TeV& copy);
45 AliRsnAnalysisPhi7TeV& operator=(const AliRsnAnalysisPhi7TeV& copy);
46 virtual ~AliRsnAnalysisPhi7TeV();
48 void SetUseMC (Bool_t yn = kTRUE);
49 void SetCheckITS(Bool_t yn = kTRUE) {fCheckITS = yn;}
50 void SetCheckTPC(Bool_t yn = kTRUE) {fCheckTPC = yn;}
51 void SetCheckTOF(Bool_t yn = kTRUE) {fCheckTOF = yn;}
52 void SetAddITSSA(Bool_t yn = kTRUE) {fAddITSSA = yn;}
54 void SetMaxVz(Double_t v) {fMaxVz = v;}
56 void SetITSband(Double_t v) {fMaxITSband = v;}
57 void SetITSmom (Double_t v) {fMaxITSmom = v;}
59 void SetTPCpLimit(Double_t v) {fTPCpLimit = v;}
60 void SetTPCrange(Double_t min, Double_t max) {fMinTPCband = min; fMaxTPCband = max;}
61 void SetTPCpar(Double_t p0, Double_t p1, Double_t p2, Double_t p3, Double_t p4)
62 {fTPCpar[0]=p0;fTPCpar[1]=p1;fTPCpar[2]=p2;fTPCpar[3]=p3;fTPCpar[4]=p4;}
64 void SetTOFcalibrateESD(Bool_t yn = kTRUE) {fTOFcalibrateESD = yn;}
65 void SetTOFcorrectTExp (Bool_t yn = kTRUE) {fTOFcorrectTExp = yn;}
66 void SetTOFuseT0 (Bool_t yn = kTRUE) {fTOFuseT0 = yn;}
67 void SetTOFtuneMC (Bool_t yn = kTRUE) {fTOFtuneMC = yn;}
68 void SetTOFresolution (Double_t v = 100.0) {fTOFresolution = v;}
69 void SetMinTOF (Double_t v) {fMinTOF = v;}
70 void SetMaxTOF (Double_t v) {fMaxTOF = v;}
72 virtual void UserCreateOutputObjects();
73 virtual void UserExec(Option_t *option = "");
74 virtual void Terminate(Option_t *option = "");
76 Int_t EventEval(AliESDEvent *esd);
77 AliESDtrackCuts* GetCutsTPC() {return &fESDtrackCutsTPC;}
78 AliESDtrackCuts* GetCutsITS() {return &fESDtrackCutsITS;}
80 Bool_t IsITSTPC (AliESDtrack *track);
81 Bool_t IsITSSA (AliESDtrack *track);
82 Bool_t MatchTOF (AliESDtrack *track);
83 Bool_t OkQuality(AliESDtrack *track);
84 Bool_t OkITSPID (AliESDtrack *track, AliPID::EParticleType pid);
85 Bool_t OkTPCPID (AliESDtrack *track, AliPID::EParticleType pid);
86 Bool_t OkTOFPID (AliESDtrack *track, AliPID::EParticleType pid);
87 Bool_t OkTrack (AliESDtrack *track, AliPID::EParticleType pid);
91 void ProcessESD(AliESDEvent *esd, AliStack *stack);
93 Bool_t fUseMC; // use MC or data?
94 Bool_t fCheckITS; // chec ITS PID?
95 Bool_t fCheckTPC; // chec TPC PID?
96 Bool_t fCheckTOF; // chec TOF PID?
97 Bool_t fAddITSSA; // add ITS standalone?
99 Double_t fMaxVz; // range in Z of primary vertex w.r. to origin
101 Double_t fMaxITSband; // range for ITS de/dx band
102 Double_t fMaxITSmom; // maximum momentum for ITS identification
104 Double_t fTPCpLimit; // limit to choose what band to apply
105 Double_t fTPCpar[5]; // parameters for TPC bethe-Bloch
106 Double_t fMinTPCband; // range for TPC de/dx band - min
107 Double_t fMaxTPCband; // range for TPC de/dx band - max
108 Double_t fMinTOF; // TOF range (min)
109 Double_t fMaxTOF; // TOF range (min)
111 TList *fOutList; // list for monitoring histograms
112 TH3F *fUnlike; // unlike-sign pairs
113 TH3F *fLikePP; // unlike-sign pairs
114 TH3F *fLikeMM; // unlike-sign pairs
115 TH3F *fTrues; // true pairs
116 TH1I *fHEvents; // histogram of event types
117 TH1F *fVertexX[2]; // histogram of X coordinate of primary vertex ([0] = tracks, [1] = SPD)
118 TH1F *fVertexY[2]; // histogram of Y coordinate of primary vertex ([0] = tracks, [1] = SPD)
119 TH1F *fVertexZ[2]; // histogram of Z coordinate of primary vertex ([0] = tracks, [1] = SPD)
121 AliESDtrackCuts fESDtrackCutsTPC; // ESD standard defined track cuts for TPC tracks
122 AliESDtrackCuts fESDtrackCutsITS; // ESD standard defined track cuts for ITS-SA tracks
123 AliESDpid *fESDpid; //! PID manager
124 AliTOFT0maker *fTOFmaker; //! TOF time0 computator
125 AliTOFcalib *fTOFcalib; //! TOF calibration
126 Bool_t fTOFcalibrateESD; // TOF settings
127 Bool_t fTOFcorrectTExp; // TOF settings
128 Bool_t fTOFuseT0; // TOF settings
129 Bool_t fTOFtuneMC; // TOF settings
130 Double_t fTOFresolution; // TOF settings
132 AliRsnDaughter fDaughter;
133 AliRsnCutESD2010 fRsnCuts;
136 ClassDef(AliRsnAnalysisPhi7TeV,1)
139 inline Bool_t AliRsnAnalysisPhi7TeV::IsITSTPC(AliESDtrack *vtrack)
142 // Checks if the track has the status flags required for a global track
147 AliWarning("NULL argument: impossible to check status");
151 return vtrack->IsOn(AliESDtrack::kTPCin);
154 inline Bool_t AliRsnAnalysisPhi7TeV::IsITSSA(AliESDtrack *vtrack)
157 // Checks if the track has the status flags required for an ITS standalone track
162 AliWarning("NULL argument: impossible to check status");
166 Bool_t isTPCin = vtrack->IsOn(AliESDtrack::kTPCin);
167 Bool_t isITSrefit = vtrack->IsOn(AliESDtrack::kITSrefit);
168 Bool_t isITSpureSA = vtrack->IsOn(AliESDtrack::kITSpureSA);
169 Bool_t isITSpid = vtrack->IsOn(AliESDtrack::kITSpid);
171 return ( (!isTPCin) && isITSrefit && (!isITSpureSA) && isITSpid );
175 inline Bool_t AliRsnAnalysisPhi7TeV::MatchTOF(AliESDtrack *vtrack)
178 // Checks if the track has matched the TOF detector
183 AliWarning("NULL argument: impossible to check status");
187 // require a minimum length to have meaningful match
188 if (vtrack->GetIntegratedLength() < 350.) return kFALSE;
190 Bool_t isTOFout = vtrack->IsOn(AliESDtrack::kTOFout);
191 Bool_t isTIME = vtrack->IsOn(AliESDtrack::kTIME);
193 return ( isTOFout && isTIME );