]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AddTaskPWG4HighPtTrackQA.C
8e6dd2b8f8975bf6470c05098543df0f28aac71f
[u/mrichter/AliRoot.git] / AddTaskPWG4HighPtTrackQA.C
1 void AddTaskPWG4HighPtTrackQAAll(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
2 {    
3
4   int cent = 10;
5   
6   AliPWG4HighPtTrackQA *taskTrackQA00cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
7   AliPWG4HighPtTrackQA *taskTrackQA01cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
8   //  AliPWG4HighPtTrackQA *taskTrackQA02cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
9   // AliPWG4HighPtTrackQA *taskTrackQA10cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
10   // AliPWG4HighPtTrackQA *taskTrackQA11cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
11   //  AliPWG4HighPtTrackQA *taskTrackQA20cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
12   //  AliPWG4HighPtTrackQA *taskTrackQA21cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
13   //  AliPWG4HighPtTrackQA *taskTrackQA40cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
14   //  AliPWG4HighPtTrackQA *taskTrackQA41cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1);
15   //  AliPWG4HighPtTrackQA *taskTrackQA50cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,5,0);
16   //  AliPWG4HighPtTrackQA *taskTrackQA60cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,6,0);
17   AliPWG4HighPtTrackQA *taskTrackQA70cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
18   AliPWG4HighPtTrackQA *taskTrackQA71cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
19   AliPWG4HighPtTrackQA *taskTrackQA72cent10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
20
21   if(isPbPb) {
22     for(cent=0; cent<4; cent++) {
23       AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
24       AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
25       //    AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
26       // AliPWG4HighPtTrackQA *taskTrackQA10 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,0);
27       // AliPWG4HighPtTrackQA *taskTrackQA11 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,1,1);
28       //      AliPWG4HighPtTrackQA *taskTrackQA20 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,0);
29       //      AliPWG4HighPtTrackQA *taskTrackQA21 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,2,1);
30       //      AliPWG4HighPtTrackQA *taskTrackQA40 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,0);
31       //      AliPWG4HighPtTrackQA *taskTrackQA41 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,4,1);
32       //      AliPWG4HighPtTrackQA *taskTrackQA50 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,5,0);
33       //      AliPWG4HighPtTrackQA *taskTrackQA60 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,6,0);
34       AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
35       AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
36       AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
37     }
38   }
39
40 }
41
42 void AddTaskPWG4HighPtTrackQAAllReduced(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 0) 
43 {    
44
45   int cent = 10;
46   
47   if(isPbPb) {
48     for(cent=0; cent<4; cent++) {
49       AliPWG4HighPtTrackQA *taskTrackQA00 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,0);
50       AliPWG4HighPtTrackQA *taskTrackQA01 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,1);
51       AliPWG4HighPtTrackQA *taskTrackQA02 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,0,2);
52       AliPWG4HighPtTrackQA *taskTrackQA70 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,0);
53       AliPWG4HighPtTrackQA *taskTrackQA71 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,1);
54       AliPWG4HighPtTrackQA *taskTrackQA72 = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,cent,7,2);
55     }
56   }
57
58 }
59
60 void AddTaskPWG4HighPtTrackQAAOD(char *prodType = "LHC10h",Bool_t isPbPb=kTRUE, Int_t iAODanalysis = 1, Int_t filterBit) 
61 {   
62   AliPWG4HighPtTrackQA *taskTrackQA = AddTaskPWG4HighPtTrackQA(prodType,isPbPb,iAODanalysis,0,0,0);
63   taskTrackQA->SetFilterMask(filterBit);
64 }
65
66 AliPWG4HighPtTrackQA* AddTaskPWG4HighPtTrackQA(char *prodType = "LHC10e14",Bool_t isPbPb=kTRUE,Int_t iAODanalysis = 0, Int_t centClass = 0, Int_t trackType = 0, Int_t cuts = 0)
67 {
68   /*
69     trackType: 0 = global
70                1 = TPC stand alone
71                2 = TPC stand alone constrained to SPD vertex
72                4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks
73                5 = Hybrid tracks: constrained TPConly for which no tight ITS is available
74                6 = Hybrid tracks: constrained loose global for which no tight ITS is available
75     cuts:      0 (global) = standard ITSTPC2010 a la RAA analysis
76                1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis
77                2 (global) = ITSrefit + no hits in SPD
78                3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks
79                0 (TPC)    = standard TPC + NClusters>70
80                1 (TPC)    = standard TPC + NClusters>0 --> to study new TPC QA recommendations
81                0 (hybrid 5) = constrained TPConly for which no tight ITS is available
82                0 (hybrid 6) = constrained loose global for which no tight ITS is available
83    */
84
85   //Load common track cut class
86   gROOT->LoadMacro("$ALICE_ROOT/PWG4/macros/CreateTrackCutsPWG4.C");
87
88   // Creates HighPtTrackQA analysis task and adds it to the analysis manager.
89   
90   // A. Get the pointer to the existing analysis manager via the static access method.
91   //==============================================================================
92   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
93   if (!mgr) {
94     Error("AddTaskPWG4HighPtQMC", "No analysis manager to connect to.");
95     return NULL;
96   }  
97
98   // B. Check the analysis type using the event handlers connected to the analysis
99   //    manager. The availability of MC handler can also be checked here.
100   //==============================================================================
101   if (!mgr->GetInputEventHandler()) {
102     ::Error("AddPWG4TaskHighPtTrackQA", "This task requires an input event handler");
103     return NULL;
104   }  
105
106   // C. Create the task, add it to manager.
107   //===========================================================================
108  
109   //CREATE THE  CUTS -----------------------------------------------
110   //Use AliESDtrackCuts
111   AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
112   AliESDtrackCuts *trackCutsReject = 0x0;
113   AliESDtrackCuts *trackCutsTPConly = new AliESDtrackCuts("AliESDtrackCutsTPConly","TPC only Cuts");
114
115   //Standard Cuts
116   //Set track cuts for global tracks
117   if(trackType==0 && cuts==0) {
118     // tight global tracks - RAA analysis
119     trackCuts = CreateTrackCutsPWG4(1000);
120   }
121   if(trackType==0 && cuts==1) {
122     //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
123     trackCuts = CreateTrackCutsPWG4(10001005);
124   }
125   if(trackType==0 && cuts==2) {
126     //Cuts global tracks with ITSrefit requirement but without SPD
127     trackCuts = CreateTrackCutsPWG4(10011005);
128   }
129   if(trackType==7 && cuts==0) {
130     // tight global tracks
131     trackCuts = CreateTrackCutsPWG4(10041005);
132     trackCutsReject = CreateTrackCutsPWG4(1005);
133     trackCutsReject->SetEtaRange(-0.9,0.9);
134     trackCutsReject->SetPtRange(0.15, 1e10);
135   }
136   if(trackType==7 && cuts==1) {
137     // tight global tracks
138     trackCuts = CreateTrackCutsPWG4(10011005);
139   }
140   if(trackType==7 && cuts==2) {
141     // no requirements on SPD and ITSrefit failed
142     trackCuts = CreateTrackCutsPWG4(10041005);       //no ITSrefit requirement filter 256
143     trackCutsReject = CreateTrackCutsPWG4(10001005); //ITSrefit requirement filter 16
144     trackCutsReject->SetEtaRange(-0.9,0.9);
145     trackCutsReject->SetPtRange(0.15, 1e10);
146   }
147
148   if(trackType==1 && cuts==0) {
149     //Set track cuts for TPConly tracks
150     trackCuts = CreateTrackCutsPWG4(2001);
151   }
152   if(trackType==1 && cuts==1) {
153     //Set track cuts for TPConly tracks
154     trackCuts = CreateTrackCutsPWG4(10032001);
155   }
156
157   if(trackType==2 && cuts==0) {
158      //       Set track cuts for TPConly constrained tracks
159     trackCuts = CreateTrackCutsPWG4(2001);
160   }
161   if(trackType==2 && cuts==1) {
162     //Set track cuts for TPConly constrained tracks
163     trackCuts = CreateTrackCutsPWG4(10032001);
164   }
165
166   if(trackType==4 && cuts==0) {
167      //       Set track cuts for TPConly constrained tracks
168     trackCuts = CreateTrackCutsPWG4(2001);
169   }
170   if(trackType==4 && cuts==1) {
171      //       Set track cuts for TPConly constrained tracks
172     trackCuts = CreateTrackCutsPWG4(10032001);
173   }
174   if(trackType==5 || trackType==6) {
175     // tight global tracks
176     trackCuts = CreateTrackCutsPWG4(1003);
177
178     trackCutsReject = CreateTrackCutsPWG4(10021003); 
179     
180     trackCutsTPConly = CreateTrackCutsPWG4(2002);
181
182     trackCutsReject->SetEtaRange(-0.9,0.9);
183     trackCutsReject->SetPtRange(0.15, 1e10);
184     
185     trackCutsTPConly->SetEtaRange(-0.9,0.9);
186     trackCutsTPConly->SetPtRange(0.15, 1e10);
187
188   }
189
190   trackCuts->SetEtaRange(-0.9,0.9);
191   trackCuts->SetPtRange(0.15, 1e10);
192   
193
194
195   //Create the task
196   AliPWG4HighPtTrackQA *taskPWG4TrackQA = new AliPWG4HighPtTrackQA(Form("AliPWG4HighPtTrackQACent%dTrack%dCuts%d",centClass,trackType,cuts));
197   taskPWG4TrackQA->SetTrackType(trackType);
198   taskPWG4TrackQA->SetCuts(trackCuts);
199   taskPWG4TrackQA->SetCutsITSLoose(trackCutsReject);
200   taskPWG4TrackQA->SetCutsTPConly(trackCutsTPConly);
201   
202   taskPWG4TrackQA->SetPtMax(100.);
203  
204   if(iAODanalysis)
205     taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kAOD);
206   else
207     taskPWG4TrackQA->SetDataType(AliPWG4HighPtTrackQA::kESD);
208
209   if(isPbPb) {
210     taskPWG4TrackQA->SetIsPbPb(kTRUE);
211     taskPWG4TrackQA->SetCentralityClass(centClass);
212   }
213   //  taskPWG4TrackQA->SetSigmaConstrainedMax(5.);
214
215   taskPWG4TrackQA->SelectCollisionCandidates();
216
217
218   // E. Create ONLY the output containers for the data produced by the task.
219   // Get and connect other common input/output containers via the manager as below
220   //==============================================================================
221
222   TString outputfile = AliAnalysisManager::GetCommonFileName();
223   outputfile += Form(":PWG4_HighPtTrackQACent%dTrackType%dCuts%d",centClass,trackType,cuts);
224   
225   AliAnalysisDataContainer *cout_histQAtrack = mgr->CreateContainer(Form("qa_histsQAtrackCent%dType%dcuts%d",centClass,trackType,cuts), TList::Class(), AliAnalysisManager::kOutputContainer,outputfile);
226
227   mgr->AddTask(taskPWG4TrackQA);
228   mgr->ConnectInput(taskPWG4TrackQA,0,mgr->GetCommonInputContainer());
229   mgr->ConnectOutput(taskPWG4TrackQA,1,cout_histQAtrack);
230
231   // Return task pointer at the end
232   return taskPWG4TrackQA;
233 }