]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/macros/AddTaskPWG4HighPtSpectra.C
fix bug from last commit - Marta V.
[u/mrichter/AliRoot.git] / PWGJE / macros / AddTaskPWG4HighPtSpectra.C
CommitLineData
fdceab34 1//DEFINITION OF A FEW CONSTANTS
de88b926 2#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))
3
67ebd013 4const Float_t phimin = 0.;
5const Float_t phimax = 2.*TMath::Pi();
6const Float_t etamin = -0.9;
7const Float_t etamax = 0.9;
67ebd013 8
dae7dd67 9const Int_t mintrackrefsTPC = 0;
10const Int_t mintrackrefsITS = 0;
fdceab34 11
03372fd1 12void AddTaskPWG4HighPtSpectra(TString year = "2011", char *prodType = "LHC11h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0, UInt_t triggerMask = AliVEvent::kMB,Bool_t bSelectHijingParticles = kFALSE)
fdceab34 13{
7b90d977 14 int cent = 10;
15
03372fd1 16 if(year.Contains("2011")) {
17 AddTaskPWG4HighPtSpectra2011(prodType,isPbPb,bSelectHijingParticles);
18 }
19 else {
20
21 AliPWG4HighPtSpectra *taskSpectra00cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0,triggerMask,bSelectHijingParticles);
22 AliPWG4HighPtSpectra *taskSpectra01cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1,triggerMask,bSelectHijingParticles);
23 // AliPWG4HighPtSpectra *taskSpectra02cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,2,triggerMask,bSelectHijingParticles);
24 // AliPWG4HighPtSpectra *taskSpectra10cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,1,0,triggerMask,bSelectHijingParticles);
25 // AliPWG4HighPtSpectra *taskSpectra20cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,2,0,triggerMask,bSelectHijingParticles);
26 AliPWG4HighPtSpectra *taskSpectra70cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0,triggerMask,bSelectHijingParticles);
27 AliPWG4HighPtSpectra *taskSpectra71cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1,triggerMask,bSelectHijingParticles);
28 AliPWG4HighPtSpectra *taskSpectra72cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,2,triggerMask,bSelectHijingParticles);
29
30 if(isPbPb) {
31 for(cent=0; cent<4; cent++) {
32 AliPWG4HighPtSpectra *taskSpectra00 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0,triggerMask,bSelectHijingParticles);
33 AliPWG4HighPtSpectra *taskSpectra01 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1,triggerMask,bSelectHijingParticles);
34 // AliPWG4HighPtSpectra *taskSpectra02 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,2,triggerMask,bSelectHijingParticles);
35 // AliPWG4HighPtSpectra *taskSpectra10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,1,0,triggerMask,bSelectHijingParticles);
36 // AliPWG4HighPtSpectra *taskSpectra20 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,2,0,triggerMask,bSelectHijingParticles);
37 AliPWG4HighPtSpectra *taskSpectra70 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0,triggerMask,bSelectHijingParticles);
38 AliPWG4HighPtSpectra *taskSpectra71 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1,triggerMask,bSelectHijingParticles);
39 AliPWG4HighPtSpectra *taskSpectra72 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,2,triggerMask,bSelectHijingParticles);
40 }
41 }
42 }
43
44}
45
46void AddTaskPWG4HighPtSpectra2011(char *prodType = "LHC10h", Bool_t isPbPb=kTRUE,Bool_t bSelHijingParticles = kFALSE)
47{
48
49 int cent = 10;
50
51 UInt_t iPhysicsSelectionFlag = AliVEvent::kMB|AliVEvent::kCentral|AliVEvent::kSemiCentral;
52 UInt_t iPhysicsSelectionFlagEMCEJE = AliVEvent::kEMCEJE;
53
54 AliPWG4HighPtSpectra *taskSpectra00cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0,iPhysicsSelectionFlag,bSelHijingParticles);
55 AliPWG4HighPtSpectra *taskSpectra01cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1,iPhysicsSelectionFlag,bSelHijingParticles);
56 AliPWG4HighPtSpectra *taskSpectra70cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0,iPhysicsSelectionFlag,bSelHijingParticles);
57 AliPWG4HighPtSpectra *taskSpectra71cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1,iPhysicsSelectionFlag,bSelHijingParticles);
58 AliPWG4HighPtSpectra *taskSpectra72cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,2,iPhysicsSelectionFlag,bSelHijingParticles);
59 AliPWG4HighPtSpectra *taskSpectra05cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,5,iPhysicsSelectionFlag,bSelHijingParticles);
60 AliPWG4HighPtSpectra *taskSpectra74cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,4,iPhysicsSelectionFlag,bSelHijingParticles);
61 AliPWG4HighPtSpectra *taskSpectra75cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,5,iPhysicsSelectionFlag,bSelHijingParticles);
2461511f 62 AliPWG4HighPtSpectra *taskSpectra40cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,4,0,iPhysicsSelectionFlag,bSelHijingParticles);
03372fd1 63
64 AliPWG4HighPtSpectra *taskSpectraEMCJE00cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
65 AliPWG4HighPtSpectra *taskSpectraEMCJE01cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
66 AliPWG4HighPtSpectra *taskSpectraEMCJE70cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
67 AliPWG4HighPtSpectra *taskSpectraEMCJE71cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
68 AliPWG4HighPtSpectra *taskSpectraEMCJE72cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,2,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
69 AliPWG4HighPtSpectra *taskSpectraEMCJE05cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,5,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
70 AliPWG4HighPtSpectra *taskSpectraEMCJE74cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,4,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
71 AliPWG4HighPtSpectra *taskSpectraEMCJE75cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,5,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
2461511f 72 AliPWG4HighPtSpectra *taskSpectraEMCJE40cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,4,0,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
03372fd1 73
7b90d977 74
75 if(isPbPb) {
76 for(cent=0; cent<4; cent++) {
03372fd1 77
78 AliPWG4HighPtSpectra *taskSpectra00 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0,iPhysicsSelectionFlag,bSelHijingParticles);
79 AliPWG4HighPtSpectra *taskSpectra01 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1,iPhysicsSelectionFlag,bSelHijingParticles);
80 AliPWG4HighPtSpectra *taskSpectra70 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0,iPhysicsSelectionFlag,bSelHijingParticles);
81 AliPWG4HighPtSpectra *taskSpectra71 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1,iPhysicsSelectionFlag,bSelHijingParticles);
82 AliPWG4HighPtSpectra *taskSpectra72 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,2,iPhysicsSelectionFlag,bSelHijingParticles);
83 AliPWG4HighPtSpectra *taskSpectra05 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,5,iPhysicsSelectionFlag,bSelHijingParticles);
84 AliPWG4HighPtSpectra *taskSpectra74 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,4,iPhysicsSelectionFlag,bSelHijingParticles);
85 AliPWG4HighPtSpectra *taskSpectra75 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,5,iPhysicsSelectionFlag,bSelHijingParticles);
2461511f 86 AliPWG4HighPtSpectra *taskSpectra40 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,4,0,iPhysicsSelectionFlag,bSelHijingParticles);
03372fd1 87
88 AliPWG4HighPtSpectra *taskSpectraEMCJE00 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,0,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
89 AliPWG4HighPtSpectra *taskSpectraEMCJE01 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,1,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
90 AliPWG4HighPtSpectra *taskSpectraEMCJE70 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,0,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
91 AliPWG4HighPtSpectra *taskSpectraEMCJE71 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,1,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
92 AliPWG4HighPtSpectra *taskSpectraEMCJE72 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,2,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
93 AliPWG4HighPtSpectra *taskSpectraEMCJE05 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,0,5,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
94 AliPWG4HighPtSpectra *taskSpectraEMCJE74 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,4,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
95 AliPWG4HighPtSpectra *taskSpectraEMCJE75 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,7,5,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
2461511f 96 AliPWG4HighPtSpectra *taskSpectraEMCJE40 = ConfigureTaskPWG4HighPtSpectra(prodType,isPbPb,cent,4,0,iPhysicsSelectionFlagEMCEJE,bSelHijingParticles);
03372fd1 97
7b90d977 98 }
03372fd1 99
7b90d977 100 }
101
102}
103
104
5d87a047 105AliPWG4HighPtSpectra* ConfigureTaskPWG4HighPtSpectra(char *prodType = "LHC10e14", Bool_t isPbPb=kTRUE,Int_t centClass = 0,
03372fd1 106 Int_t trackType = 0, Int_t cuts = 0, UInt_t triggerMask = AliVEvent::kMB,
107 Bool_t bSelectHijingParticles = kFALSE)
7b90d977 108{
109
110 /*
a5e0d236 111 trackType: 0 = global
7b90d977 112 1 = TPC stand alone
113 2 = TPC stand alone constrained to SPD vertex
5a0bd31f 114 cuts: 0 (global) = standard ITSTPC2010 a la RAA analysis
115 1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis
116 2 (global) = ITSrefit + no hits in SPD
117 3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks
7b90d977 118 0 (TPC) = standard TPC + NClusters>70
119 1 (TPC) = standard TPC + NClusters>0 --> to study new TPC QA recommendations
120 */
121
67ebd013 122 // Creates HighPtSpectra analysis task and adds it to the analysis manager.
fdceab34 123
380cff49 124 //Load common track cut class
5c4489e2 125 gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");
380cff49 126
fdceab34 127 // A. Get the pointer to the existing analysis manager via the static access method.
128 //==============================================================================
129 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
130 if (!mgr) {
131 Error("AddTaskPWG4HighPtSpectra", "No analysis manager to connect to.");
132 return NULL;
133 }
134
135 // B. Check the analysis type using the event handlers connected to the analysis
136 // manager. The availability of MC handler can also be checked here.
137 //==============================================================================
138 if (!mgr->GetInputEventHandler()) {
67ebd013 139 ::Error("AddTaskPWG4HighPtSpectra", "This task requires an input event handler");
fdceab34 140 return NULL;
141 }
142 TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
143 const char *analysisType = "ESD";//"TPC"
144
145 // C. Create the task, add it to manager.
146 //===========================================================================
67ebd013 147 //CONTAINER DEFINITION
fdceab34 148 Info("AliPWG4HighPtSpectra","SETUP CONTAINER");
149 //the sensitive variables, their indices
67ebd013 150 UInt_t ipt = 0;
151 UInt_t iphi = 1;
152 UInt_t ieta = 2;
dae7dd67 153 UInt_t incls = 3;
67ebd013 154
fdceab34 155 //Setting up the container grid...
de88b926 156 UInt_t nstep = 4; //Steps/Modes for containers
7b90d977 157 Int_t kStepReconstructed = 0;
158 Int_t kStepSecondaries = 1;
159 Int_t kStepReconstructedMC = 2;
160 Int_t kStepMCAcceptance = 3;
b1cd0099 161
162 //redefine pt ranges in case of Jet-Jet production
de88b926 163 Float_t ptBinEdges[4][4];
164 Float_t ptmin = 0.0 ;
165 Float_t ptmax = 100.0 ;
166
167 ptBinEdges[0][0] = 2.;
168 ptBinEdges[0][1] = 0.2;
169 ptBinEdges[1][0] = 6.;
170 ptBinEdges[1][1] = 0.5;
171 ptBinEdges[2][0] = 20.;
172 ptBinEdges[2][1] = 2.;
173 ptBinEdges[3][0] = 100.;
174 ptBinEdges[3][1] = 5.;
175
dae7dd67 176 const Int_t nvar = 4; //number of variables on the grid: pt:phi:eta:NClsIter1
de88b926 177
178 const Int_t nbin11 = round((ptBinEdges[0][0]-ptmin)/ptBinEdges[0][1]);
179 const Int_t nbin12 = round((ptBinEdges[1][0]-ptBinEdges[0][0])/ptBinEdges[1][1])+nbin11;
180 const Int_t nbin13 = round((ptBinEdges[2][0]-ptBinEdges[1][0])/ptBinEdges[2][1])+nbin12;
181 const Int_t nbin14 = round((ptBinEdges[3][0]-ptBinEdges[2][0])/ptBinEdges[3][1])+nbin13;
182
183 const Int_t nbin1 = nbin14; //bins in pt
03372fd1 184 const Int_t nbin2 = 36; //bins in phi
185 const Int_t nbin3 = 10; //bins in eta
186 const Int_t nbin4 = 1;//6; //bins in NClsIter1: 0 70 80 90 100 120
dae7dd67 187
fdceab34 188
fdceab34 189 //arrays for the number of bins in each dimension
190 Int_t iBin[nvar];
191 iBin[0]=nbin1;
67ebd013 192 iBin[1]=nbin2;
193 iBin[2]=nbin3;
dae7dd67 194 iBin[3]=nbin4;
ec555a3c 195
fdceab34 196 //arrays for lower bounds :
197 Double_t *binLim1=new Double_t[nbin1+1];
67ebd013 198 Double_t *binLim2=new Double_t[nbin2+1];
199 Double_t *binLim3=new Double_t[nbin3+1];
dae7dd67 200 Double_t *binLim4=new Double_t[nbin4+1];
ec555a3c 201
67ebd013 202 //values for bin lower bounds
203 for(Int_t i=0; i<=nbin1; i++) {
b1cd0099 204 if(i<=nbin11) binLim1[i]=(Double_t)ptmin + (ptBinEdges[0][0]-ptmin)/nbin11*(Double_t)i ;
de88b926 205 if(i<=nbin12 && i>nbin11) binLim1[i]=(Double_t)ptBinEdges[0][0] + (ptBinEdges[1][0]-ptBinEdges[0][0])/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ;
206 if(i<=nbin13 && i>nbin12) binLim1[i]=(Double_t)ptBinEdges[1][0] + (ptBinEdges[2][0]-ptBinEdges[1][0])/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;
207 if(i<=nbin14 && i>nbin13) binLim1[i]=(Double_t)ptBinEdges[2][0] + (ptBinEdges[3][0]-ptBinEdges[2][0])/(nbin14-nbin13)*((Double_t)i-(Double_t)nbin13) ;
67ebd013 208 }
67ebd013 209 for(Int_t i=0; i<=nbin2; i++) binLim2[i]=(Double_t)phimin + (phimax-phimin)/nbin2*(Double_t)i ;
210 for(Int_t i=0; i<=nbin3; i++) binLim3[i]=(Double_t)etamin + (etamax-etamin)/nbin3*(Double_t)i ;
03372fd1 211 binLim4[0] = 70.;//0.;
212 binLim4[1] = 160.;//70.;
213 // binLim4[2] = 80.;
214 // binLim4[3] = 90.;
215 // binLim4[4] = 100.;
216 // binLim4[5] = 120.;
217 // binLim4[6] = 160.;
dae7dd67 218
67ebd013 219
220 AliCFContainer* containerPos = new AliCFContainer("containerPos","container for positive tracks",nstep,nvar,iBin);
221 //setting the bin limits
222 containerPos -> SetBinLimits(ipt,binLim1);
223 containerPos -> SetBinLimits(iphi,binLim2);
224 containerPos -> SetBinLimits(ieta,binLim3);
dae7dd67 225 containerPos -> SetBinLimits(incls,binLim4);
fdceab34 226
67ebd013 227 AliCFContainer* containerNeg = new AliCFContainer("containerNeg","container for negative tracks",nstep,nvar,iBin);
fdceab34 228 //setting the bin limits
67ebd013 229 containerNeg -> SetBinLimits(ipt,binLim1);
230 containerNeg -> SetBinLimits(iphi,binLim2);
231 containerNeg -> SetBinLimits(ieta,binLim3);
dae7dd67 232 containerNeg -> SetBinLimits(incls,binLim4);
67ebd013 233
fdceab34 234 //CREATE THE CUTS -----------------------------------------------
235 //Use AliESDtrackCuts
327d12da 236 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
237 AliESDtrackCuts *trackCutsReject = 0x0;
7b90d977 238 //Standard Cuts
239 //Set track cuts for global tracks
240 if(trackType==0 && cuts==0) {
380cff49 241 // tight global tracks - RAA analysis
5c4489e2 242 trackCuts = CreateTrackCutsPWGJE(1000);
34fc6450 243 }
7b90d977 244 if(trackType==0 && cuts==1) {
380cff49 245 //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
03372fd1 246 trackCuts = CreateTrackCutsPWGJE(10001006);
5a0bd31f 247 }
03372fd1 248 if(trackType==0 && cuts==5) {
249 //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis + NCrossedRowsCut>120 recommended in 2011
250 trackCuts = CreateTrackCutsPWGJE(10001008);
251 }
252
5a0bd31f 253 if(trackType==0 && cuts==2) {
254 //Cuts global tracks with ITSrefit requirement but without SPD
5d87a047 255 if (!strcmp(prodType,"LHC12a15e"))
f8bd6b9f 256 trackCuts = CreateTrackCutsPWGJE(10011008);
5d87a047 257 else
258 trackCuts = CreateTrackCutsPWGJE(10011006);
5a0bd31f 259 }
380cff49 260 if(trackType==7 && cuts==0) {
b43ea0be 261 // no requirements on SPD and ITSrefit failed
03372fd1 262 trackCuts = CreateTrackCutsPWGJE(10041006); //no ITSrefit requirement
263 trackCutsReject = CreateTrackCutsPWGJE(1006); //ITSrefit requirement
ed5c9f3f 264 trackCutsReject->SetEtaRange(etamin,etamax);
b43ea0be 265 trackCutsReject->SetPtRange(0.15, 1e10);
34fc6450 266 }
03372fd1 267 if(trackType==7 && cuts==4) {
268 // tight global tracks + NCrossedRowsCut>120 recommended in 2011
269 trackCuts = CreateTrackCutsPWGJE(10041008);
270 trackCutsReject = CreateTrackCutsPWGJE(1008);
271 trackCutsReject->SetEtaRange(-0.9,0.9);
272 trackCutsReject->SetPtRange(0.15, 1e10);
273 }
380cff49 274 if(trackType==7 && cuts==1) {
b43ea0be 275 //Cuts global tracks with ITSrefit requirement but without SPD
03372fd1 276 trackCuts = CreateTrackCutsPWGJE(10011006);
277 }
278 if(trackType==7 && cuts==5) {
279 // tight global tracks + NCrossedRowsCut>120 recommended in 2011
280 trackCuts = CreateTrackCutsPWGJE(10011008);
b43ea0be 281 }
03372fd1 282
b43ea0be 283 if(trackType==7 && cuts==2) {
284 // no requirements on SPD and ITSrefit failed
03372fd1 285 trackCuts = CreateTrackCutsPWGJE(10041006); //no ITSrefit requirement filter 256
286 trackCutsReject = CreateTrackCutsPWGJE(10001006); //ITSrefit requirement filter 16
dae7dd67 287 trackCutsReject->SetEtaRange(etamin,etamax);
b43ea0be 288 trackCutsReject->SetPtRange(0.15, 1e10);
380cff49 289 }
03372fd1 290 if(trackType==7 && cuts==6) {
291 // no requirements on SPD and ITSrefit failed
292 trackCuts = CreateTrackCutsPWGJE(10041008); //no ITSrefit requirement filter 256
293 trackCutsReject = CreateTrackCutsPWGJE(10001008); //ITSrefit requirement filter 16
294 trackCutsReject->SetEtaRange(-0.9,0.9);
295 trackCutsReject->SetPtRange(0.15, 1e10);
296 }
297
298
380cff49 299
7b90d977 300 if(trackType==1 && cuts==0) {
301 //Set track cuts for TPConly tracks
5c4489e2 302 trackCuts = CreateTrackCutsPWGJE(2001);
7b90d977 303 }
304 if(trackType==2 && cuts==0) {
305 // Set track cuts for TPConly constrained tracks
5c4489e2 306 trackCuts = CreateTrackCutsPWGJE(2001);
7b90d977 307 }
dae7dd67 308 trackCuts->SetEtaRange(etamin,etamax);
10295ac3 309 trackCuts->SetPtRange(0.15, 1e10);
43032097 310
ec555a3c 311 // Gen-Level kinematic cuts
fdceab34 312 AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
67ebd013 313 mcKineCuts->SetPtRange(0.15,1e10);
dae7dd67 314 mcKineCuts->SetEtaRange(etamin,etamax);//-0.5,0.5);
fdceab34 315 mcKineCuts->SetRequireIsCharged(kTRUE);
316
317 //Acceptance Cuts
dae7dd67 318 //AliCFAcceptanceCuts *mcAccCuts = new AliCFAcceptanceCuts("mcAccCuts","MC acceptance cuts");
fdceab34 319 // mcAccCuts->SetMinNHitITS(mintrackrefsITS);
dae7dd67 320 //mcAccCuts->SetMinNHitTPC(mintrackrefsTPC);
fdceab34 321
322 TObjArray* recList = new TObjArray(0);
fdceab34 323 TObjArray* secList = new TObjArray(0) ;
9b58297c 324 TObjArray* recMCList = new TObjArray(0);
fdceab34 325
326 printf("CREATE MC KINE CUTS\n");
327 TObjArray* mcList = new TObjArray(0) ;
328 mcList->AddLast(mcKineCuts);
dae7dd67 329 //mcList->AddLast(mcAccCuts);
fdceab34 330
331 //CREATE THE INTERFACE TO CORRECTION FRAMEWORK USED IN THE TASK
332 printf("CREATE INTERFACE AND CUTS\n");
67ebd013 333 AliCFManager* manPos = new AliCFManager("manPos","Manager for Positive tracks") ;
334 manPos->SetParticleContainer(containerPos);
9b58297c 335 manPos->SetParticleCutsList(kStepReconstructed,recList);
9b58297c 336 manPos->SetParticleCutsList(kStepSecondaries,secList);
337 manPos->SetParticleCutsList(kStepReconstructedMC,recMCList);
338 manPos->SetParticleCutsList(kStepMCAcceptance,mcList);
67ebd013 339
340 AliCFManager* manNeg = new AliCFManager("manNeg","Manager for Negative tracks") ;
341 manNeg->SetParticleContainer(containerNeg);
9b58297c 342 manNeg->SetParticleCutsList(kStepReconstructed,recList);
9b58297c 343 manNeg->SetParticleCutsList(kStepSecondaries,secList);
344 manNeg->SetParticleCutsList(kStepReconstructedMC,recMCList);
345 manNeg->SetParticleCutsList(kStepMCAcceptance,mcList);
67ebd013 346
0714a353 347 TString trigName = "";
348 if (triggerMask == AliVEvent::kAnyINT)
349 trigName += "kAnyINT";
350 else if (triggerMask == AliVEvent::kAny)
351 trigName += "kAny";
352 else if(triggerMask == AliVEvent::kINT7)
353 trigName += "kINT7";
354 else if(triggerMask == AliVEvent::kMB)
355 trigName += "kMB";
356 else if(triggerMask == AliVEvent::kEMC7)
357 trigName += "kEMC7";
358 else if(triggerMask == AliVEvent::kEMCEJE)
359 trigName += "kEMCEJE";
360 else if(triggerMask == AliVEvent::kEMCEGA)
361 trigName += "kEMCEGA";
362
67ebd013 363
0714a353 364 AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra(Form("AliPWG4HighPtSpectraCent%dTrackType%dCuts%dPSF%s",centClass,trackType,cuts,trigName.Data()));
34fc6450 365 taskPWG4HighPtSpectra->SetTrackType(trackType);
fdceab34 366 taskPWG4HighPtSpectra->SetCuts(trackCuts);
327d12da 367 taskPWG4HighPtSpectra->SetCutsReject(trackCutsReject);
43032097 368 taskPWG4HighPtSpectra->SetCFManagerPos(manPos); //here is set the CF manager +
369 taskPWG4HighPtSpectra->SetCFManagerNeg(manNeg); //here is set the CF manager -
5d87a047 370 taskPWG4HighPtSpectra->SetTriggerMask(triggerMask);
03372fd1 371 taskPWG4HighPtSpectra->SelectHIJINGOnly(bSelectHijingParticles);
67ebd013 372
7b90d977 373 if(isPbPb) {
374 taskPWG4HighPtSpectra->SetIsPbPb(kTRUE);
375 taskPWG4HighPtSpectra->SetCentralityClass(centClass);
376 }
dae7dd67 377 // taskPWG4HighPtSpectra->SetSigmaConstrainedMax(5.);
7b90d977 378
e50809ff 379
fdceab34 380 // E. Create ONLY the output containers for the data produced by the task.
381 // Get and connect other common input/output containers via the manager as below
382 //==============================================================================
383
43032097 384 //------ output containers ------
fdceab34 385 TString outputfile = AliAnalysisManager::GetCommonFileName();
0714a353 386 outputfile += Form(":PWG4_HighPtSpectraCent%dTrackType%dCuts%d%s",centClass,trackType,cuts,trigName.Data());
03372fd1 387
388 AliAnalysisDataContainer *coutput0 = 0x0;
389 AliAnalysisDataContainer *coutput1 = 0x0;
390 AliAnalysisDataContainer *coutput2 = 0x0;
391 AliAnalysisDataContainer *cout_cuts0 = 0x0;
392
0714a353 393 coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectraCent%dTrackType%dCuts%d%s",centClass,trackType,cuts,trigName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
394 coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectraCent%dTrackType%dCuts%d%s",centClass,trackType,cuts,trigName.Data()), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
395 coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectraCent%dTrackType%dCuts%d%s",centClass,trackType,cuts,trigName.Data()), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
396 cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCutsCent%dTrackType%dCuts%d%s",centClass,trackType,cuts,trigName.Data()), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);
397
fdceab34 398 mgr->AddTask(taskPWG4HighPtSpectra);
399
400 mgr->ConnectInput(taskPWG4HighPtSpectra,0,mgr->GetCommonInputContainer());
401 mgr->ConnectOutput(taskPWG4HighPtSpectra,0,coutput0);
402 mgr->ConnectOutput(taskPWG4HighPtSpectra,1,coutput1);
67ebd013 403 mgr->ConnectOutput(taskPWG4HighPtSpectra,2,coutput2);
e5abcde9 404 mgr->ConnectOutput(taskPWG4HighPtSpectra,3,cout_cuts0);
fdceab34 405
406 // Return task pointer at the end
407 return taskPWG4HighPtSpectra;
408}