]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/hfe/macros/AddTaskHFEnpepPb.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / hfe / macros / AddTaskHFEnpepPb.C
1 AliAnalysisTask *AddTaskHFEnpepPb(Bool_t MCthere,
2                                   Bool_t isAOD, 
3                                   Bool_t kNPERef = kTRUE,
4                                   Bool_t kNPERefTPConly = kFALSE,
5                                   Bool_t kNPEkAny = kFALSE,
6                                   Bool_t kNPEsystematics = kFALSE,
7                                   Bool_t kNPEpidsys = kFALSE,
8                                   Bool_t kNPEw = kFALSE,
9                                   Bool_t kBeauty = kFALSE
10 ){
11
12   // Default settings (TOF-TPC pPb)
13   const int     kDefTPCcl       = 100;
14   const int     kDefTPCclPID    =  80;
15   const int     kDefITScl       =   4;
16   const double  kDefDCAr        =   1.;
17   const double  kDefDCAz        =   2.;
18   const double  kDefTOFs        =   3.;
19   const double  kDefEtaIncMin   = -0.8;
20   const double  kDefEtaIncMax   =  0.8;
21   const double  kDefPhiMin      = -1.; // by default no phi cut, otherwise units of 2.*TMath::Pi()/18.
22   const double  kDefPhiMax      = -1.; // by default no phi cut
23  
24
25   // TPC PID Cuts Inclusive leg:
26   // General, if mean=0 and sigma=1: 
27   // Above 3 sigma we neglect 0.13%
28   // cut in sigma (effective efficiency from cut to 3 sigma)
29   // -1 (84%), -0.75 (77.2%), -0.5 (69%), -0.25 (59.7%), -0.129 (55%)
30   //  0 (49.9%), 0.122 (45%), 0.25 (40%), 0.5 (30.7%)
31
32   // ESDs: mean 0.06, sigma 1    --> -0.94, -0.69, -0.44,  -0.19, -0.009 ,0.06, 0.182, 0.31, 0.56
33   // AODs: mean 0.09, sigma 1    --> -0.91, -0.66, -0.41,  -0.16, -0.039 ,0.09, 0.212, 0.34, 0.59
34   // AODs: mean 0.09, sigma 1.03 --> -0.94, -0.68, -0.425, -0.17, -0.043 ,0.09, 0.216, 0.35, 0.60
35
36   // On ESD:
37   // mean is actually 0.06 (abs(eta)<0.6)
38   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%
39   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%
40   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%
41   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%
42   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%
43   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%
44   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%
45   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%
46   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%
47
48   // AOD 139 with TPC multi cor; w/o TOF PID
49   Double_t dEdxhmAOD[12] = {3.18,3.18,3.18,3.18,3.18,3.18,3.18,3.18,3.18,3.18,3.18,3.18};  // upper cut
50   Double_t tpcl0AOD[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% <-- hadron contamination
51   Double_t tpcl1AOD[12]  = {-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68};  // 77.2%
52   Double_t tpcl2AOD[12]  = {-0.425,-0.425,-0.425,-0.425,-0.425,-0.425,-0.425,-0.425,-0.425,-0.425,-0.425,-0.425};  // 69% <-- had cont
53   Double_t tpcl3AOD[12]  = {-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17};  // 59.7%           <-- had cont
54   Double_t tpcl4AOD[12]  = {-0.043,-0.043,-0.043,-0.043,-0.043,-0.043,-0.043,-0.043,-0.043,-0.043,-0.043,-0.043};  // 55%
55   Double_t tpcl5AOD[12]  = {0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09};  // 49.9%                       <-- had cont
56   Double_t tpcl6AOD[12]  = {0.216,0.216,0.216,0.216,0.216,0.216,0.216,0.216,0.216,0.216,0.216,0.216};  // 45%
57   Double_t tpcl7AOD[12]  = {0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35,0.35};  // 40%
58   Double_t tpcl8AOD[12]  = {0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60,0.60};  // 30.7%
59
60   // Default setting for the associated electron for the NonPhotonic Analysis
61   const double  kassETAm        = -0.8;
62   const double  kassETAp        =  0.8;
63   const double  kassMinPt       =  0.1;
64   const int     kassITS         =    2;
65   const int     kassTPCcl       =   60;
66   const int     kassTPCPIDcl    =   60;
67   const double  kassDCAr        =  1.0;
68   const double  kassDCAz        =  2.0;
69   const double  kassTPCSminus   = -3.0;
70   const double  kassTPCSplus    =  3.0;
71   const double  kassITSpid      =  3.0;
72   const double  kassTOFpid      =  0.0;
73
74   enum{
75           kHFEV0A = 1,
76           kHFEV0M = 2,
77           kHFECL1 = 3,
78           kHFEZNA = 4
79   };
80
81   const Bool_t isBeauty = kFALSE;
82   
83   //get the current analysis manager
84   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
85   if (!mgr) {
86     Error("AddTask_hfe_HFE", "No analysis manager found.");
87     return 0;
88   }
89
90   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
91
92   //@@ 0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
93
94   Double_t dEdxaclm[12], dEdxachm[12],dEdxaclm1[12], dEdxachm1[12],dEdxaclm2[12], dEdxachm2[12];
95   for(int icent = 0; icent < 12; icent++){
96     dEdxaclm[icent] = kassTPCSminus;
97     dEdxachm[icent] = kassTPCSplus;
98     dEdxaclm1[icent] = -2;
99     dEdxachm1[icent] = 2;
100     dEdxaclm2[icent] = -4;
101     dEdxachm2[icent] = 4;
102   }
103
104   Int_t kWei = -1;
105   if (MCthere) kWei = 0;
106   enum {
107     // updated after changes by Jan on 17.04, commit 21648
108     kb2weiData = 3,  // DPMJET weights 
109     kd3weiData = 4,  // HIJING weights 
110     kd3weib2   = 5,  // HIJING weights for DPMJET
111   };
112   
113   
114
115   if(kNPERef){
116     // **************************************************************
117     // 
118     // Reference task
119     //
120     // **************************************************************
121     if(isAOD==1){ 
122       // Reference
123       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
124                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
125                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
126       /*
127       if (MCthere){  // run without weights
128         // this is an exceptional case, so I handle it by hand for the moment
129         RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
130                             dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
131                             kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData);
132         RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
133                             dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
134                             kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weib2);
135         RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
136                             dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
137                             kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE);
138       }
139       // no ITS SA
140       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
141                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
142                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kFALSE, kWei, kd3weiData);
143       */
144     }
145     else {
146       // Reference
147       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1, 
148                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
149                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
150       }
151   }
152   
153   if(kNPERefTPConly){
154     // **************************************************************
155     // 
156     // Reference task for TPC-only on the inclusive leg
157     //
158     // **************************************************************
159     if(isAOD==1){
160       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl5AOD, 
161                           dEdxhmAOD, 0., AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
162                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE);
163     }
164     else
165       {
166         RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1, 
167                             dEdxhm, 0., AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
168                             kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE);
169       }
170   }
171   
172   if(kNPEkAny){
173     // **************************************************************
174     // 
175     // task for kAny instead of kBoth
176     //
177     // **************************************************************
178
179     // coming soon
180   }
181   
182   if (kNPEpidsys){
183     if(isAOD==1){
184       // Inclusive: TPC pid cuts
185       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl0AOD, 
186                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
187                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
188       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl3AOD, 
189                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
190                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
191       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl5AOD, 
192                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
193                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
194       // Inclusive: TOF PID cuts
195       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
196                           dEdxhmAOD, 2.0, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
197                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
198       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
199                           dEdxhmAOD, 2.5, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
200                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
201       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
202                           dEdxhmAOD, 4.0, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
203                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
204     }
205     else
206       {
207         RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl5, 
208                             dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
209                             kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE);
210       }
211
212   }
213
214   if(kNPEsystematics){
215     // **************************************************************
216     // 
217     // Cut systematics 
218     //
219     // **************************************************************
220     if(isAOD==1){
221
222       // TPC clusters for tracking
223       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, 80, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
224                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
225                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
226       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, 90, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
227                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
228                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
229       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty,100, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
230                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
231                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
232       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty,120, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
233                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
234                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
235       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty,130, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
236                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
237                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
238       // TPC clusters for PID
239       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, 60, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
240                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
241                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
242       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl,100, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
243                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
244                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
245       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl,110, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
246                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
247                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
248
249       /* SYST 2
250       // Cat1 + cat2 tracks: vary ITS PID
251       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
252                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
253                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, 2.0, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
254       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
255                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
256                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, 4.0, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
257       // Cat1 + cat2 tracks: vary TPC PID
258       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
259                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
260                           kassDCAr, kassDCAz, dEdxaclm1, dEdxachm1, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
261       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
262                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
263                           kassDCAr, kassDCAz, dEdxaclm2, dEdxachm2, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kd3weiData);
264       // no ITS SA: add TOF PID
265       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
266                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
267                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, 2.0, kTRUE, kFALSE, kWei, kd3weiData);
268       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
269                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
270                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, 3.0, kTRUE, kFALSE, kWei, kd3weiData);
271       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
272                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
273                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, 4.0, kTRUE, kFALSE, kWei, kd3weiData);
274       // no ITS SA: add TOF PID, vary TPC PID
275       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
276                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
277                           kassDCAr, kassDCAz, dEdxaclm1, dEdxachm1, kassITSpid, kassTOFpid, kTRUE, kFALSE, kWei, kd3weiData);
278       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
279                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
280                           kassDCAr, kassDCAz, dEdxaclm2, dEdxachm2, kassITSpid, kassTOFpid, kTRUE, kFALSE, kWei, kd3weiData);
281       */
282       /* SYST 1
283       // Inclusive DCA cuts
284       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, 0.5, 1.0, tpcl2AOD, 
285                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
286                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
287       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, 2.0, 5.0, tpcl2AOD, 
288                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
289                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
290       // Associated DCA cuts
291       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
292                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
293                           0.5, 1.0, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
294       RegisterTaskNPEpPb( MCthere, isAOD, isBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, 
295                           dEdxhmAOD, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl, 
296                           2.0, 5.0, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei);
297       */
298     }
299   }
300
301   if(kBeauty){
302     // **************************************************************
303     //
304     // Beauty task
305     //
306     // **************************************************************
307     if(isAOD==1){
308       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, dEdxhmAOD, kDefTOFs,
309                           AliHFEextraCuts::kBoth, kHFEV0A, kDefEtaIncMin, kDefEtaIncMax, kassETAm, kassETAp, kassITS, kassTPCcl,
310                           kassTPCPIDcl, kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kTRUE, kTRUE, -1, kTRUE);
311       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, dEdxhmAOD, kDefTOFs,
312                           AliHFEextraCuts::kBoth, kHFEV0A, kDefEtaIncMin, kDefEtaIncMax, kassETAm, kassETAp, kassITS, kassTPCcl,
313                           kassTPCPIDcl, kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kTRUE, kTRUE,-1, kTRUE, kTRUE, kFALSE);
314       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2AOD, dEdxhmAOD, kDefTOFs,
315                           AliHFEextraCuts::kBoth, kHFEV0A, kDefEtaIncMin, kDefEtaIncMax, kassETAm, kassETAp, kassITS, kassTPCcl,
316                           kassTPCPIDcl, kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kTRUE, kTRUE,-1, kTRUE, kTRUE, kTRUE);
317     }
318     else{
319       // reference
320       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
321                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
322                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
323       // nonphotonic bg 
324       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
325                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
326                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiDataSys, kTRUE); 
327       //ip sys
328       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
329                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
330                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE, kFALSE, kFALSE, 1);
331       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
332                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
333                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE, kFALSE, kFALSE, 2);
334
335       // tpc cluster
336       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, 100, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
337                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
338                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
339       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, 120, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
340                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
341                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
342
343       // tpc pid cluster
344       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, 60, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
345                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
346                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
347       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, 100, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
348                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
349                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
350
351       // dca xy
352       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, 2, kDefDCAz, tpcl1,
353                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
354                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
355       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, 0.5, kDefDCAz, tpcl1,
356                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
357                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
358       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, 0.1, 0.5, tpcl1,
359                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
360                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
361
362       // dca z 
363       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, 4, tpcl1,
364                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
365                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
366       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, 1, tpcl1,
367                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
368                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
369
370       // ITS cluster
371       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, 2, kDefDCAr, kDefDCAz, tpcl1,
372                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
373                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
374       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, 3, kDefDCAr, kDefDCAz, tpcl1,
375                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
376                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
377
378       // TOF PID
379       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
380                           dEdxhm, 2, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
381                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
382       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl1,
383                           dEdxhm, 4, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
384                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
385
386       // TPC PID
387       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl0, //84%
388                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
389                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
390       RegisterTaskNPEpPb( MCthere, isAOD, kBeauty, kDefTPCcl, kDefTPCclPID, kDefITScl, kDefDCAr, kDefDCAz, tpcl2, //50%
391                           dEdxhm, kDefTOFs, AliHFEextraCuts::kBoth, kHFEV0A, kassITS, kassTPCcl, kassTPCPIDcl,
392                           kassDCAr, kassDCAz, dEdxaclm, dEdxachm, kassITSpid, kassTOFpid, kTRUE, kTRUE, kWei, kb2weiData, kTRUE);
393     }
394   }
395   
396   return NULL;
397 }
398
399 //===============================================================================
400 AliAnalysisTask *RegisterTaskNPEpPb(Bool_t useMC, Bool_t isAOD, Bool_t beauty,
401                Int_t tpcCls=120, Int_t tpcClsPID=80, 
402                Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0, 
403                Double_t *tpcdEdxcutlow=NULL, Double_t *tpcdEdxcuthigh=NULL, 
404                Double_t tofs=3., Int_t itshitpixel =AliHFEextraCuts::kBoth, 
405                                     //Double_t phimi=-1., Double_t phima=-1.,
406                Int_t icent=1,
407                Int_t assITS=2, Int_t assTPCcl=100,
408                Int_t assTPCPIDcl=80, Double_t assDCAr=1.0, Double_t assDCAz=2.0,
409                Double_t *assTPCSminus = NULL, Double_t *assTPCSplus=NULL,
410                Double_t assITSpid = 3.0, Double_t assTOFpid = 0.0,
411                Bool_t useCat1Tracks = kTRUE, Bool_t useCat2Tracks = kTRUE,
412                Int_t weightlevelback = -1, Int_t WhichWei = 0,
413                Bool_t npeBeauty = kFALSE, Bool_t ipCharge = kFALSE, Bool_t isOpp = kFALSE, Int_t ipSys = 0)
414 {
415   // Fixed values
416   Double_t etaIncMin = -0.8; Double_t etaIncMax = 0.8;
417   Double_t phimi = -1.; Double_t phima = -1.;
418   Double_t assETAm=-0.8; Double_t assETAp=0.8;
419   Double_t assMinPt = 0.1;
420
421   //
422   // Cuts on the inclusive leg
423   //
424   Int_t idcaxy = (Int_t)(dcaxy*10.);
425   Int_t idcaz = (Int_t)(dcaz*10.);
426   Int_t tpclow = 0;
427   if(tpcdEdxcutlow) tpclow = (Int_t) (tpcdEdxcutlow[0]*1000.);
428   Int_t itofs = (Int_t)(tofs*10.);
429   Int_t ipixelany = itshitpixel;
430   TString phirange("");
431   if (phimi >= 0. && phima >= 0.){ 
432     phirange += "Phi";
433     phirange += phimi;
434     phirange += "-";
435     phirange += phima;
436   } 
437
438   //
439   // Cuts on the associated leg
440   //
441   Int_t iassDCAr = (Int_t)(assDCAr*10);
442   Int_t iassDCAz = (Int_t)(assDCAz*10);
443   Int_t iassTPCSminus = assTPCSplus ? (Int_t)(assTPCSplus[0]*1000.) : 0;
444   Int_t iassTOF = (Int_t)(assTOFpid*10);
445   Int_t iassITS = (Int_t)(assITSpid * 10.);
446   Int_t phoTrack = 0;
447   if (useCat1Tracks) phoTrack = 1;
448   if (useCat2Tracks) phoTrack = 2;
449
450   //printf("Argument passed to function to determine the centrality estimator %i\n", icent);
451   if (icent == 2) TString cesti("V0M");
452   else if (icent == 3) TString cesti("CL1");
453   else if (icent == 4) TString cesti("ZNA");
454   else TString cesti("V0A");
455   //printf("Centrality estimator %s\n", cesti.Data());
456
457   TString cweightsback("");
458   if(weightlevelback>=0) {
459     cweightsback += "Wa";
460     if (WhichWei>0){
461       cweightsback += WhichWei;
462       //cweightsback += weightlevelback;
463     }
464   }
465
466   if(beauty) {
467      if(ipCharge && isOpp) TString cbeauty("BeautyIPopp");
468      else if(ipCharge) TString cbeauty("BeautyIPcrg");
469      else if(!ipCharge) TString cbeauty("Beauty");
470      else TString cbeauty("BeautyWrong");
471      cbeauty = cbeauty+Form("ip%dwei%d",ipSys,WhichWei);
472   }
473   else TString cbeauty("");
474
475   TString appendix(TString::Format("incTPCc%dp%dITS%dSPD%dDCAr%dz%dTPCs%dTOFs%d_photTPCc%dp%dITS%dDCAr%dz%dTPCs%dITSs%dTOFs%dtr%dce%s%s%s",
476                                    tpcCls,tpcClsPID,itsCls,ipixelany,idcaxy,idcaz,tpclow,itofs,assTPCcl,assTPCPIDcl,assITS,iassDCAr,
477                                    iassDCAz,iassTPCSminus,iassITS,iassTOF,phoTrack,cesti.Data(),cweightsback.Data(),cbeauty.Data()));
478
479   printf("Add macro appendix %s\n", appendix.Data());
480
481  if(!gROOT->GetListOfGlobalFunctions()->FindObject("ConfigWeightFactors")) 
482      gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigWeightFactors.C");
483  if(!gROOT->GetListOfGlobalFunctions()->FindObject("ConfigHFEnpepPb")) 
484      gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEnpepPb.C");
485
486   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
487   AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
488   AliAnalysisTaskHFE *task = ConfigHFEnpepPb(useMC, isAOD, beauty, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz, 
489                                              tpcdEdxcutlow, tpcdEdxcuthigh, tofs, 0, itshitpixel, icent, etaIncMin, etaIncMax,
490                                              phimi*TMath::Pi()/9., phima*TMath::Pi()/9., 
491                                              assETAm, assETAp, assMinPt, assITS, assTPCcl, assTPCPIDcl, assDCAr, assDCAz, assTPCSminus, 
492                                              assTPCSplus,assITSpid,assTOFpid,
493                                              useCat1Tracks, useCat2Tracks, weightlevelback, npeBeauty, ipCharge, isOpp, ipSys);
494
495   if(isAOD)
496     task->SetAODAnalysis();
497   else
498     task->SetESDAnalysis();
499
500   if (useMC)    task->SetHasMCData(kTRUE);
501   else          task->SetHasMCData(kFALSE);
502
503   task->SelectCollisionCandidates(AliVEvent::kINT7);
504
505   if(useMC&&(beauty || (weightlevelback>=0))) {
506     ConfigWeightFactors(task,kFALSE,WhichWei);
507     if(WhichWei==8) {
508       ConfigWeightFactors(task,kTRUE,3);
509       task->SetNonHFEsystematics(kTRUE);
510     }
511   }
512   TString containerName = mgr->GetCommonFileName();
513   containerName += ":HFEtask";
514   containerName += appendix.Data();
515   printf("container name: %s\n", containerName.Data());
516
517   //create data containers
518   task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, containerName.Data() ));
519   task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(), AliAnalysisManager::kOutputContainer, containerName.Data()));
520   mgr->ConnectInput(task,  0, cinput );
521
522   mgr->AddTask(task);
523
524   return NULL;
525 }