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