]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/macros/AddTaskHFEpPb.C
updates
[u/mrichter/AliRoot.git] / PWGHF / hfe / macros / AddTaskHFEpPb.C
CommitLineData
420bd2ea 1AliAnalysisTask *AddTaskHFEpPb(Bool_t MCthere = kFALSE,
1af8f786 2 Bool_t isAOD = kFALSE,
3 Bool_t kTPCTOF_Ref = kTRUE,
420bd2ea 4 Bool_t kTPC_Ref = kFALSE,
1af8f786 5 Bool_t kTPCTOF_Cent = kFALSE,
6 Bool_t kTPCTOF_Sys = kFALSE,
420bd2ea 7 Bool_t kTPCTOF_TPCPID = kFALSE,
8 Bool_t kITS_Sys = kFALSE,
9 Bool_t kTPCTOFTRD_Ref = kFALSE,
10 Bool_t kTPCTOFTRD_mbPID = kFALSE,
7a35b7aa 11 Bool_t kTPCTOFTRD_PID = kFALSE,
1af8f786 12 int TRDtrigger = 0
13 ){
14 //get the current analysis manager
15 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
16 if (!mgr) {
17 Error("AddTaskHFEpPb", "No analysis manager found.");
18 return 0;
19 }
20
21 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
22
23 //@@ 0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
24
25 // Default settings
420bd2ea 26 // 15.04.2013 The ITS cut changes now officially from 3 to 4
1af8f786 27 const int kDefITScl = 4;
28 const int kDefTPCcl = 110;
29 const int kDefTPCclPID = 80;
30 const double kDefDCAr = 1.;
31 const double kDefDCAz = 2.;
420bd2ea 32
1af8f786 33 // 24.02.2013 After the latest fits, mean is 0 and sigma is 1
420bd2ea 34 const double kDefTPCs = 0.0;
35 const double kDefTPCu = 3.0;
36 const double kDefTOFs = 3.0;
1af8f786 37 if(!kTPCTOFTRD_Ref) TRDtrigger = 0;
1af8f786 38
8dc7fa14 39 // NEW SPLINES + CORRECTIONS: mean 0, width 1
40 // mean is actually 0.06 (abs(eta)<0.6)
41 Double_t dEdxhm[12] = {3.06,3.06,3.06,3.06,3.06,3.06,3.06,3.06,3.06,3.06,3.06,3.06}; // Above 3 sigma we neglect 0.13%
42
43 Double_t tpcl0[12] = {-0.94,-0.94,-0.94,-0.94,-0.94,-0.94,-0.94,-0.94,-0.94,-0.94,-0.94,-0.94}; // 84%
44 Double_t tpcl1[12] = {-0.44,-0.44,-0.44,-0.44,-0.44,-0.44,-0.44,-0.44,-0.44,-0.44,-0.44,-0.44}; // 69%
45 Double_t tpcl2[12] = {0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06}; // 50%
46
47 Double_t tpcl3[12] = {-0.69,-0.69,-0.69,-0.69,-0.69,-0.69,-0.69,-0.69,-0.69,-0.69,-0.69,-0.69}; // 77.2%
48 Double_t tpcl4[12] = {-0.19,-0.19,-0.19,-0.19,-0.19,-0.19,-0.19,-0.19,-0.19,-0.19,-0.19,-0.19}; // 59.7%
49 Double_t tpcl5[12] = {0.186,0.186,0.186,0.186,0.186,0.186,0.186,0.186,0.186,0.186,0.186,0.186}; // 45%
50 Double_t tpcl6[12] = {0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31}; // 40%
51 Double_t tpcl7[12] = {0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56,0.56}; // 30.7%
52
1af8f786 53 // For TPC only
54 const double kDefTPCs1 = 0.0;
55 const double kDefTPCu1 = 3.0;
d44e3c84 56
57 // eta cut
58 Int_t etacut=0; // eta cut off
420bd2ea 59
60 // 24.02.2013 From now on, use task with centrality by default and keep one without for cross check
61 // 15.04.2013 We do not need the minimum bias task any more, take out by default
62
63 if(kTPC_Ref){
64 // Reference, 69% TPC PID, with centrality V0A
65 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1);
1af8f786 66 }
67
8dc7fa14 68 //------------------------------//
69 // TPC-TOF analysis
70 //------------------------------//
1af8f786 71
72 if(kTPCTOF_Ref){
420bd2ea 73 // Reference task, 69% TPC PID, with centrality V0A
74 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
75 }
76
77 if (kTPCTOF_TPCPID){
78 // TPC PID
79 if (!MCthere){
80 //TPC only
81 //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1);
82 //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl0[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1);
83
84 //TPC-TOF
85 //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
86 //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
87 // new pT bins
88 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl0[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
89 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
90 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl3[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
91 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl4[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
92 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl5[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
93 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl6[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
94 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl7[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
95 }
96 }
97
98 if (kITS_Sys){
99 // ITS hits and SPD request
100 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,3,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
101 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
102 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,3,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst,1);
103 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,4,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst,1);
104 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst,1);
1af8f786 105 }
106
107 if (kTPCTOF_Cent){
8dc7fa14 108 // For the moment we set V0A as the reference centrality estimator, and test the other ones:
109 // 1: V0A, 2: V0M, 3: CL1, 4: ZNA
420bd2ea 110 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,2); // V0M
111 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,3); // CL1
112 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,4); // ZNA
1af8f786 113 }
114
115 if(kTPCTOF_Sys){
8dc7fa14 116 // TOF PID
420bd2ea 117 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],2.0,0,AliHFEextraCuts::kBoth,1);
118 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],2.5,0,AliHFEextraCuts::kBoth,1);
119 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],3.5,0,AliHFEextraCuts::kBoth,1);
120 RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],4.0,0,AliHFEextraCuts::kBoth,1);
8dc7fa14 121
122 // TPC clusters
420bd2ea 123 RegisterTask(MCthere,isAOD,80,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
124 RegisterTask(MCthere,isAOD,90,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
125 RegisterTask(MCthere,isAOD,100,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
126 RegisterTask(MCthere,isAOD,120,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
127 RegisterTask(MCthere,isAOD,130,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
128 RegisterTask(MCthere,isAOD,140,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
129
8dc7fa14 130 // TPC clusters PID
420bd2ea 131 RegisterTask(MCthere,isAOD,kDefTPCcl,60,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
132 RegisterTask(MCthere,isAOD,kDefTPCcl,90,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
133 RegisterTask(MCthere,isAOD,kDefTPCcl,100,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
134 RegisterTask(MCthere,isAOD,kDefTPCcl,110,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
8dc7fa14 135 }
420bd2ea 136
137 //------------------------------//
138 // TPC-TOF-TRD analysis
139 //------------------------------//
8dc7fa14 140
420bd2ea 141 if(kTPCTOFTRD_Ref){
142 RegisterTaskPID2(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger);
143 RegisterTaskPID2(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger);
144 }
d44e3c84 145
7a35b7aa 146 if(kTPCTOFTRD_mbPID){
420bd2ea 147 // without TOF
148 RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,0,6,4,"TRD,TPC",etacut);
149 RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,0,6,4,"TPC,TRD",etacut);
150 RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,0,6,2,"TRD,TPC",etacut);
151 RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,0,5,4,"TRD,TPC",etacut);
152 RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,0,5,4,"TPC,TRD",etacut);
153 RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,0,5,2,"TRD,TPC",etacut);
d44e3c84 154 }
155
7a35b7aa 156 if(kTPCTOFTRD_PID){
420bd2ea 157 // without TOF
158 RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,0,5,4,"TRD,TPC");
159 RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,0,5,4,"TPC,TRD");
160 RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,0,6,4,"TRD,TPC");
161 RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,0,6,4,"TPC,TRD");
162 }
7a35b7aa 163
8dc7fa14 164 return NULL;
165}
166
167
168//===============================================================================
169
170AliAnalysisTask *RegisterTask(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80,
420bd2ea 171 Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0,
172 Double_t *tpcdEdxcutlow=NULL,
173 Double_t *tpcdEdxcuthigh=NULL,
174 //Double_t tpcs=-0.0113, Double_t tpcu=3.09,
175 Double_t tofs=3., Int_t tofm=0,
176 Int_t itshitpixel = AliHFEextraCuts::kBoth, Int_t icent=1){
8dc7fa14 177
178 Int_t idcaxy = (Int_t)(dcaxy*10.);
179 Int_t idcaz = (Int_t)(dcaz*10.);
180 Int_t tpclow = 0;
181 if(tpcdEdxcutlow) tpclow = (Int_t) (tpcdEdxcutlow[0]*1000.);
182 Int_t itofs = (Int_t)(tofs*10.);
183 Int_t ipixelany = itshitpixel;
8dc7fa14 184
185 printf("Argument passed to function to determine the centrality estimator %i\n", icent);
186
187 if (icent == 2) TString cesti("V0M");
188 else if (icent == 3) TString cesti("CL1");
189 else if (icent == 4) TString cesti("ZNA");
190 else TString cesti("V0A");
191
0b7c6a7b 192 TString appendix(TString::Format("centTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dce%s",tpcCls,
8dc7fa14 193 tpcClsPID,itsCls,idcaxy,idcaz,tpclow,itofs,tofm,ipixelany,cesti.Data()));
194 printf("Add macro appendix %s\n", appendix.Data());
420bd2ea 195 printf("Centrality estimator %s\n", cesti.Data());
8dc7fa14 196
197 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEpPb.C");
198 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
199 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
200 AliAnalysisTaskHFE *task = ConfigHFEpPb(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz,
201 tpcdEdxcutlow,tpcdEdxcuthigh,
202 tofs,tofm,itshitpixel,icent);
203
204 if(isAOD)
205 task->SetAODAnalysis();
206 else
207 task->SetESDAnalysis();
208 if (useMC)
209 task->SetHasMCData(kTRUE);
210 else{
211 task->SetHasMCData(kFALSE);
212 }
213 task->SelectCollisionCandidates(AliVEvent::kINT7);
214
215 TString containerName = mgr->GetCommonFileName();
216 containerName += ":HFEtask";
217 containerName += appendix.Data();
218 printf("container name: %s\n", containerName.Data());
219
220 //create data containers
221 task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()),
222 TList::Class(), AliAnalysisManager::kOutputContainer,
223 containerName.Data()));
224 task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(),
225 AliAnalysisManager::kOutputContainer,
226 containerName.Data()));
227 mgr->ConnectInput(task, 0, cinput );
228
229 mgr->AddTask(task);
230 return NULL;
231}
232
233//===============================================================================
234
235AliAnalysisTask *RegisterTaskPID2(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80,
420bd2ea 236 Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0,
237 Double_t tpcs=-0.0113, Double_t tpcu=3.09,
238 Double_t tofs=3., Int_t tofm=0,
239 Int_t itshitpixel = AliHFEextraCuts::kBoth,
240 Bool_t withetacorrection = kTRUE,
241 Int_t TRDtrigger=0){
242
8dc7fa14 243 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEmbpPb.C");
244 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
245 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
420bd2ea 246 AliAnalysisTaskHFE *task = ConfigHFEmbpPb(useMC, isAOD, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz,
8dc7fa14 247 tpcs,tpcu,tofs,tofm,3.,kFALSE,kTRUE,kFALSE,itshitpixel,withetacorrection,0,TRDtrigger);
420bd2ea 248
8dc7fa14 249 if(isAOD)
250 task->SetAODAnalysis();
251 else
252 task->SetESDAnalysis();
420bd2ea 253
8dc7fa14 254 if (useMC)
255 task->SetHasMCData(kTRUE);
256 else{
257 task->SetHasMCData(kFALSE);
258 }
259
260 if(TRDtrigger==0) task->SelectCollisionCandidates(AliVEvent::kINT7);
261 else task->SelectCollisionCandidates(AliVEvent::kTRD);
420bd2ea 262
8dc7fa14 263 Int_t idcaxy = (Int_t)(dcaxy*10.);
264 Int_t idcaz = (Int_t)(dcaz*10.);
265 Int_t itpcs = (Int_t)(tpcs*1000.);
266 Int_t itofs = (Int_t)(tofs*10.);
267 Int_t ipixelany = itshitpixel;
268 Int_t ietacorr = 0;
269 if(withetacorrection) ietacorr = 1;
270
271 TString appendix(TString::Format("mbTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dtrdtrg%d",tpcCls,
272 tpcClsPID,itsCls,idcaxy,idcaz,itpcs,itofs,tofm,ipixelany,TRDtrigger));
273 printf("Add macro appendix %s\n", appendix.Data());
274
275 TString containerName = mgr->GetCommonFileName();
276 containerName += ":HFEtask";
277 containerName += appendix.Data();
278 printf("container name: %s\n", containerName.Data());
279
280 //create data containers
281 task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()),
282 TList::Class(), AliAnalysisManager::kOutputContainer,
283 containerName.Data()));
284 task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(),
285 AliAnalysisManager::kOutputContainer,
286 containerName.Data()));
287 mgr->ConnectInput(task, 0, cinput );
288
289 mgr->AddTask(task);
290 return NULL;
291}
292
420bd2ea 293//===============================================================================
294// TRD PID
295//===============================================================================
d44e3c84 296
7a35b7aa 297AliAnalysisTask *RegisterTaskPID2mbTRD(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80,
420bd2ea 298 Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0,
299 Double_t tpcs=-0.0113, Double_t tpcu=3.09,
300 Double_t tofs=3., Int_t tofm=0,
301 Int_t itshitpixel = AliHFEextraCuts::kBoth,
302 Bool_t withetacorrection = kTRUE,
303 Int_t TRDtrigger=0,Int_t trdl=6, Int_t trde=4,TString detector="TRD,TPC",Int_t etacut=0){
304
305 TString detused=detector.Copy();
306 TPRegexp(",").Substitute(detused,"","g");
307 printf("detectors in use %s %s \n",detector.Data(),detused.Data());
308
309 Int_t idcaxy = (Int_t)(dcaxy*10.);
1af8f786 310 Int_t idcaz = (Int_t)(dcaz*10.);
311 Int_t itpcs = (Int_t)(tpcs*1000.);
312 Int_t itofs = (Int_t)(tofs*10.);
313 Int_t ipixelany = itshitpixel;
314 Int_t ietacorr = 0;
315 if(withetacorrection) ietacorr = 1;
420bd2ea 316
1af8f786 317 TString appendix(TString::Format("mbTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dtrdtrg%dtrdl%itrde%iPID%setacut%i",tpcCls,
318 tpcClsPID,itsCls,idcaxy,idcaz,itpcs,itofs,tofm,ipixelany,TRDtrigger,trdl,trde,detused.Data(),etacut));
319 printf("Add macro appendix %s\n", appendix.Data());
320
1af8f786 321 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEmbpPbTRD.C");
d44e3c84 322 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
323 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
1af8f786 324 AliAnalysisTaskHFE *task = ConfigHFEmbpPbTRD(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz,
420bd2ea 325 tpcs,tpcu,tofs,tofm,3.,kFALSE,kTRUE,kFALSE,itshitpixel,withetacorrection,0,TRDtrigger,trdl,trde,detector,etacut);
d44e3c84 326
327 if(isAOD)
328 task->SetAODAnalysis();
329 else
330 task->SetESDAnalysis();
331
1af8f786 332 if(useMC)
d44e3c84 333 task->SetHasMCData(kTRUE);
334 else{
335 task->SetHasMCData(kFALSE);
336 }
337
338 if(TRDtrigger==0) task->SelectCollisionCandidates(AliVEvent::kINT7);
339 else task->SelectCollisionCandidates(AliVEvent::kTRD);
340
1af8f786 341 TString containerName = mgr->GetCommonFileName();
342 containerName += ":HFEtask";
343 containerName += appendix.Data();
344 printf("container name: %s\n", containerName.Data());
d44e3c84 345
346 //create data containers
347 task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()),
348 TList::Class(), AliAnalysisManager::kOutputContainer,
1af8f786 349 containerName.Data()));
d44e3c84 350 task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(),
351 AliAnalysisManager::kOutputContainer,
1af8f786 352 containerName.Data()));
d44e3c84 353 mgr->ConnectInput(task, 0, cinput );
354
355 mgr->AddTask(task);
1af8f786 356
d44e3c84 357 return NULL;
1af8f786 358}
7a35b7aa 359
360//=========================================================================
361AliAnalysisTask *RegisterTaskPID2TRD(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80,
362 Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0,
363 Double_t *tpcdEdxcutlow=NULL,
364 Double_t *tpcdEdxcuthigh=NULL,
365 Double_t tofs=3., Int_t tofm=0,
366 Int_t itshitpixel = AliHFEextraCuts::kBoth, Int_t icent=1,
367 Int_t TRDtrigger=0,Int_t trdl=6, Int_t trde=4,TString detector){
368
420bd2ea 369 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEpPbTRD.C");
370 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
371 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
372
373 TString detused=detector.Copy();
374 TPRegexp(",").Substitute(detused,"","g");
375 printf("detectors in use %s %s \n",detector.Data(),detused.Data());
376
377 if (icent == 2) TString cesti("V0M");
378 else if (icent == 3) TString cesti("CL1");
379 else if (icent == 4) TString cesti("ZNA");
380 else TString cesti("V0A");
381
382 Int_t idcaxy = (Int_t)(dcaxy*10.);
383 Int_t idcaz = (Int_t)(dcaz*10.);
384 Int_t tpclow = 0;
385 if(tpcdEdxcutlow) tpclow = (Int_t) (tpcdEdxcutlow[0]*1000.);
386 Int_t itofs = (Int_t)(tofs*10.);
387 Int_t ipixelany = itshitpixel;
388
389 TString appendix(TString::Format("mbTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dtrdtrg%dtrdl%itrde%iPID%scent%s",tpcCls,
390 tpcClsPID,itsCls,idcaxy,idcaz,tpclow,itofs,tofm,ipixelany,TRDtrigger,trdl,trde,detused.Data(),cesti.Data()));
391 printf("Add macro appendix %s\n", appendix.Data());
392
393 AliAnalysisTaskHFE *task = ConfigHFEpPbTRD(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz,
394 tpcdEdxcutlow,tpcdEdxcuthigh, tofs, tofm, itshitpixel, icent, -0.8, 0.8, TRDtrigger,trdl,trde,detector);
395
7a35b7aa 396 if(isAOD)
397 task->SetAODAnalysis();
398 else
399 task->SetESDAnalysis();
400
401 if (useMC)
402 task->SetHasMCData(kTRUE);
403 else{
404 task->SetHasMCData(kFALSE);
405 }
406
407 if(TRDtrigger<2) task->SelectCollisionCandidates(AliVEvent::kINT7);
408 else task->SelectCollisionCandidates(AliVEvent::kTRD);
409
420bd2ea 410 TString containerName = mgr->GetCommonFileName();
411 containerName += ":HFEtask";
412 containerName += appendix.Data();
413 printf("container name: %s\n", containerName.Data());
414
7a35b7aa 415 //create data containers
416 task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()),
417 TList::Class(), AliAnalysisManager::kOutputContainer,
418 containerName.Data()));
419 task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(),
420 AliAnalysisManager::kOutputContainer,
421 containerName.Data()));
422 mgr->ConnectInput(task, 0, cinput );
423
424 mgr->AddTask(task);
425 return NULL;
426}