]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/macros/AddTaskImpParRes.C
possibility to read AODs and use AliESDtrackCuts (A. Festanti)
[u/mrichter/AliRoot.git] / PWGPP / macros / AddTaskImpParRes.C
1 /*AliAnalysisTaskSEImpParRes *AddTaskImpParRes(TString dirName="",
2                                              Bool_t readMC=kFALSE,
3                                              Bool_t isAOD=kTRUE,
4                                              Int_t SPDreq=1,
5                                              Int_t selPdg=-1,
6                                              Bool_t diamond=kTRUE,
7                                              Bool_t skipTrack=kTRUE,
8                                              Int_t minmult=0,
9                                              Int_t maxmult=1000000)*/
10 AliAnalysisTaskSEImpParRes *AddTaskImpParRes(Bool_t readMC=kFALSE,
11                                              Int_t selPdg=-1,
12                                              Bool_t diamond=kTRUE,
13                                              Bool_t skipTrack=kTRUE,
14                                              Int_t minmult=0,
15                                              Int_t maxmult=1000000,
16                                              Int_t checkSDDIsIn=1,
17                                              TString dirName="",
18                                              Bool_t isAOD=kFALSE,
19                                              Int_t SPDreq=1)
20 {
21   //
22   // Configuration for the study of the impact parameter resolution
23   //
24   // xianbao.yuan@pd.infn.it, andrea.dainese@pd.infn.it
25   //
26
27
28   // Get the pointer to the existing analysis manager via the static access method.
29   //==============================================================================
30   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
31   if (!mgr) {
32     ::Error("AddTaskImpParRes", "No analysis manager to connect to.");
33     return NULL;
34   }  
35
36   AliESDtrackCuts* esdTrackCuts = new AliESDtrackCuts("d0ResAnalysisESDTrackCuts");
37   esdTrackCuts->SetRequireTPCRefit(kTRUE);
38   esdTrackCuts->SetRequireITSRefit(kTRUE);
39   switch(SPDreq){
40   case(1):
41     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
42     break;
43   case(2):
44     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth);
45     break;
46   case(3):
47     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
48     break;
49   default:
50     esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kBoth);
51     break;
52     }
53   esdTrackCuts->SetMaxChi2PerClusterTPC(4);
54   //esdTrackCuts->SetMinNCrossedRowsTPC(70);
55   esdTrackCuts->SetMinNClustersTPC(70);
56
57   
58   // Aanalysis task    
59   AliAnalysisTaskSEImpParRes *d0ResTask = new AliAnalysisTaskSEImpParRes("d0ResAnalysis");
60   d0ResTask->SetDebugLevel(2);
61   d0ResTask->SetReadMC(readMC);
62   d0ResTask->SetIsAOD(isAOD);
63   d0ResTask->SetSelectedPdg(selPdg);
64   d0ResTask->SetUseDiamond(diamond);
65   d0ResTask->SetSkipTrack(skipTrack);
66   d0ResTask->SetMultiplicityRange(minmult,maxmult);
67   d0ResTask->SetESDtrackCuts(esdTrackCuts);
68   mgr->AddTask(d0ResTask);
69
70   TString fname=Form("%s:ImpParRes_Performance",mgr->GetCommonFileName());
71   if(selPdg>0) {fname+=selPdg;}
72   fname += dirName.Data();
73
74   TString name=dirName;
75   //
76   // Create containers for input/output
77   AliAnalysisDataContainer *cinputd0distr = mgr->CreateContainer(Form("cinputd0distr%s",name.Data()),TChain::Class(), 
78                                                                  AliAnalysisManager::kInputContainer);
79
80   AliAnalysisDataContainer *coutputd0ITSpureSARec = mgr->CreateContainer(Form("coutputd0ITSpureSARec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(), 
81                                                                    AliAnalysisManager::kOutputContainer,
82                                                                    fname.Data());
83
84   AliAnalysisDataContainer *coutputd0ITSpureSASkip = mgr->CreateContainer(Form("coutputd0ITSpureSASkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(), 
85                                                                    AliAnalysisManager::kOutputContainer,
86                                                                    fname.Data());
87
88   AliAnalysisDataContainer *coutputd0allPointRec = mgr->CreateContainer(Form("coutputd0allPointRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(), 
89                                                                    AliAnalysisManager::kOutputContainer,
90                                                                    fname.Data());
91   
92   AliAnalysisDataContainer *coutputd0allPointSkip = mgr->CreateContainer(Form("coutputd0allPointSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(), 
93                                                                    AliAnalysisManager::kOutputContainer,
94                                                                    fname.Data());
95  
96   AliAnalysisDataContainer *coutputd0partPointRec = mgr->CreateContainer(Form("coutputd0partPointRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
97                                                                         AliAnalysisManager::kOutputContainer,
98                                                                         fname.Data());
99
100   AliAnalysisDataContainer *coutputd0partPointSkip = mgr->CreateContainer(Form("coutputd0partPointSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
101                                                                         AliAnalysisManager::kOutputContainer,
102                                                                         fname.Data());
103
104   AliAnalysisDataContainer *coutputd0onepointSPDRec = mgr->CreateContainer(Form("coutputd0onepointSPDRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
105                                                                         AliAnalysisManager::kOutputContainer,
106                                                                         fname.Data());
107
108   AliAnalysisDataContainer *coutputd0onepointSPDSkip = mgr->CreateContainer(Form("coutputd0onepointSPDSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
109                                                                         AliAnalysisManager::kOutputContainer,
110                                                                         fname.Data());
111
112   AliAnalysisDataContainer *coutputd0postvTracRec = mgr->CreateContainer(Form("coutputd0postvTracRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
113                                                                         AliAnalysisManager::kOutputContainer,
114                                                                         fname.Data());
115  
116  
117   AliAnalysisDataContainer *coutputd0postvTracSkip = mgr->CreateContainer(Form("coutputd0postvTracSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
118                                                                         AliAnalysisManager::kOutputContainer,
119                                                                         fname.Data());
120  
121   AliAnalysisDataContainer *coutputd0negtvTracRec = mgr->CreateContainer(Form("coutputd0negtvTracRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
122                                                                         AliAnalysisManager::kOutputContainer,
123                                                                         fname.Data());
124  
125   AliAnalysisDataContainer *coutputd0negtvTracSkip = mgr->CreateContainer(Form("coutputd0negtvTracSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
126                                                                         AliAnalysisManager::kOutputContainer,
127                                                                         fname.Data());
128
129   AliAnalysisDataContainer *coutputd0pullAllpointRec = mgr->CreateContainer(Form("coutputd0pullAllpointRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
130                                                                         AliAnalysisManager::kOutputContainer,
131                                                                         fname.Data());
132
133
134   AliAnalysisDataContainer *coutputd0pullAllpointSkip = mgr->CreateContainer(Form("coutputd0pullAllpointSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
135                                                                         AliAnalysisManager::kOutputContainer,
136                                                                         fname.Data());
137
138   AliAnalysisDataContainer *coutputd0onlyRefitRec = mgr->CreateContainer(Form("coutputd0onlyRefitRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
139                                                                         AliAnalysisManager::kOutputContainer,
140                                                                         fname.Data());
141
142   AliAnalysisDataContainer *coutputd0onlyRefitSkip = mgr->CreateContainer(Form("coutputd0onlyRefitSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
143                                                                         AliAnalysisManager::kOutputContainer,
144                                                                         fname.Data());
145
146
147   AliAnalysisDataContainer *coutputd0sinThetaRec = mgr->CreateContainer(Form("coutputd0sinThetaRec_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
148                                                                         AliAnalysisManager::kOutputContainer,
149                                                                         fname.Data());
150
151
152   AliAnalysisDataContainer *coutputd0sinThetaSkip = mgr->CreateContainer(Form("coutputd0sinThetaSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
153                                                                         AliAnalysisManager::kOutputContainer,
154                                                                         fname.Data());
155
156
157  AliAnalysisDataContainer *coutputd0allPointTrue = mgr->CreateContainer(Form("coutputd0allPointTrue_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
158                                                                         AliAnalysisManager::kOutputContainer,
159                                                                         fname.Data());
160
161  AliAnalysisDataContainer *coutputd0postvTracTrue = mgr->CreateContainer(Form("coutputd0postvTracTrue_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
162                                                                         AliAnalysisManager::kOutputContainer,
163                                                                         fname.Data());
164
165  AliAnalysisDataContainer *coutputd0negtvTracTrue = mgr->CreateContainer(Form("coutputd0negtvTracTrue_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
166                                                                         AliAnalysisManager::kOutputContainer,
167                                                                         fname.Data());
168
169  AliAnalysisDataContainer *coutputd0pullAllpointTrue = mgr->CreateContainer(Form("coutputd0pullAllpointTrue_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
170                                                                         AliAnalysisManager::kOutputContainer,
171                                                                         fname.Data());
172
173
174  AliAnalysisDataContainer *coutputd0phiAllpointSkip = mgr->CreateContainer(Form("coutputd0phiAllpointSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
175                                                                         AliAnalysisManager::kOutputContainer,
176                                                                         fname.Data());
177
178  AliAnalysisDataContainer *coutputd0phiPostvtracSkip = mgr->CreateContainer(Form("coutputd0phiPostvtracSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
179                                                                         AliAnalysisManager::kOutputContainer,
180                                                                         fname.Data());
181  
182  AliAnalysisDataContainer *coutputd0phiNegtvtracSkip = mgr->CreateContainer(Form("coutputd0phiNegtvtracSkip_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
183                                                                             AliAnalysisManager::kOutputContainer,
184                                                                           fname.Data());
185
186  
187   AliAnalysisDataContainer *coutputd0PID = mgr->CreateContainer(Form("coutputd0PID_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
188                                                                         AliAnalysisManager::kOutputContainer,
189                                                                         fname.Data());
190  
191   AliAnalysisDataContainer *coutputd0Pt = mgr->CreateContainer(Form("coutputd0Pt_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
192                                                                         AliAnalysisManager::kOutputContainer,
193                                                                         fname.Data());
194  
195   AliAnalysisDataContainer *coutputNentries = mgr->CreateContainer(Form("coutputNentries_%d_%d%s",minmult,maxmult,name.Data()),TH1F::Class(),
196                                                                      AliAnalysisManager::kOutputContainer, 
197                                                                    fname.Data());
198
199   AliAnalysisDataContainer *coutputEstimVtx = mgr->CreateContainer(Form("coutputEstimVtx_%d_%d%s",minmult,maxmult,name.Data()),TH1F::Class(),
200                                                                      AliAnalysisManager::kOutputContainer, 
201                                                                    fname.Data());
202
203   AliAnalysisDataContainer *coutputd0withESDTC = mgr->CreateContainer(Form("coutputd0withESDTC_%d_%d%s",minmult,maxmult,name.Data()),TList::Class(),
204                                                                         AliAnalysisManager::kOutputContainer,
205                                                                         fname.Data());
206
207   // Attach input  
208   mgr->ConnectInput(d0ResTask,0,mgr->GetCommonInputContainer()); 
209   // Attack output
210   mgr->ConnectOutput(d0ResTask,1,coutputd0ITSpureSARec);
211   mgr->ConnectOutput(d0ResTask,2,coutputd0ITSpureSASkip);
212   mgr->ConnectOutput(d0ResTask,3,coutputd0allPointRec);
213   mgr->ConnectOutput(d0ResTask,4,coutputd0allPointSkip);
214   mgr->ConnectOutput(d0ResTask,5,coutputd0partPointRec);
215   mgr->ConnectOutput(d0ResTask,6,coutputd0partPointSkip);
216   mgr->ConnectOutput(d0ResTask,7,coutputd0onepointSPDRec);
217   mgr->ConnectOutput(d0ResTask,8,coutputd0onepointSPDSkip);
218   mgr->ConnectOutput(d0ResTask,9,coutputd0postvTracRec); 
219   mgr->ConnectOutput(d0ResTask,10,coutputd0postvTracSkip);
220   mgr->ConnectOutput(d0ResTask,11,coutputd0negtvTracRec);
221   mgr->ConnectOutput(d0ResTask,12,coutputd0negtvTracSkip);
222   mgr->ConnectOutput(d0ResTask,13,coutputd0pullAllpointRec);
223   mgr->ConnectOutput(d0ResTask,14,coutputd0pullAllpointSkip);
224   mgr->ConnectOutput(d0ResTask,15,coutputd0onlyRefitRec);
225   mgr->ConnectOutput(d0ResTask,16,coutputd0onlyRefitSkip);
226   mgr->ConnectOutput(d0ResTask,17,coutputd0sinThetaRec);
227   mgr->ConnectOutput(d0ResTask,18,coutputd0sinThetaSkip);
228   mgr->ConnectOutput(d0ResTask,19,coutputd0allPointTrue);
229   mgr->ConnectOutput(d0ResTask,20,coutputd0postvTracTrue);
230   mgr->ConnectOutput(d0ResTask,21,coutputd0negtvTracTrue);
231   mgr->ConnectOutput(d0ResTask,22,coutputd0pullAllpointTrue);
232   mgr->ConnectOutput(d0ResTask,23,coutputd0phiAllpointSkip);
233   mgr->ConnectOutput(d0ResTask,24,coutputd0phiPostvtracSkip);
234   mgr->ConnectOutput(d0ResTask,25,coutputd0phiNegtvtracSkip);
235   mgr->ConnectOutput(d0ResTask,26,coutputd0PID);
236   mgr->ConnectOutput(d0ResTask,27,coutputd0Pt);
237   mgr->ConnectOutput(d0ResTask,28,coutputNentries);
238   mgr->ConnectOutput(d0ResTask,29,coutputEstimVtx);
239   mgr->ConnectOutput(d0ResTask,30,coutputd0withESDTC);
240
241   return d0ResTask;
242 }