]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
updated
authorssakai <ssakai@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Apr 2013 13:05:20 +0000 (13:05 +0000)
committerssakai <ssakai@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 18 Apr 2013 13:05:20 +0000 (13:05 +0000)
PWGHF/hfe/macros/AddTaskHFEpPb.C

index f369c9dc78c8241988006f9446b827cc9653405c..04790d79c83c2c488de0c47fc0932fd38ca705c5 100644 (file)
-AliAnalysisTask *AddTaskHFEpPb(Bool_t isMC = kFALSE,
-                               Bool_t isAOD = kFALSE,
-                               Bool_t kTPCTOF_Ref = kTRUE,
-                               Bool_t kTPC_Only = kFALSE,
-                               Bool_t kTPCTOF_Cent = kFALSE,
-                               Bool_t kTPCTOF_Sys = kFALSE,
-                              Bool_t kTPCTOFTRD_Ref = kFALSE,
-                               int TRDtrigger = 0
-  ){
-  //get the current analysis manager
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  if (!mgr) {
-    Error("AddTaskHFEpPb", "No analysis manager found.");
-    return 0;
-  }
-  
-  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
-  
-  //@@ 0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-  
-  // Default settings 
-  const int kDefITScl = 3;
-  const int kDefTPCcl = 110;
-  const int kDefTPCclPID = 80;
-  const double kDefDCAr = 1.;
-  const double kDefDCAz = 2.;
-  
-  // 24.02.2013 After the latest fits, mean is 0 and sigma is 1
-  const double kDefTPCs = 0;
-  const double kDefTPCu = 3;   
-  const double kDefTOFs = 3.;
-  //const int TRDtrigger = 1; // trd trigger type
-  if(!kTPCTOFTRD_Ref) TRDtrigger = 0;
-  
-  Double_t dEdxlm[12] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};  //  50%
-  Double_t dEdxhm[12] = {3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0};
-  // For systematics:
-  Double_t tpcl0[12]  = {-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0};  //  84%
-  Double_t tpcl1[12]  = {-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53};  //  70%
-  Double_t tpcl2[12]  = {-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26};  //  60%
-  Double_t tpcl3[12]  = {0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25};  //   40%/   40%
-
-  
-  // For TPC only
-  const double kDefTPCs1 = 0.0;
-  const double kDefTPCu1 = 3.0;
-  
-  if(kTPC_Only){
-    // for the moment (09.02.2013) use the same as TOF-TPC. Refine later on
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth); // 50%
-  }
-  
-  //------------------------------//
-  //   TPC-TOF analysis
-  //------------------------------//
-  
-  if(kTPCTOF_Ref){
-    // Reference task
-    // with centrality V0A
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); // 50%
-    
-    // One cross-check without centrality, also 50%
-    RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);
-    
-  }
-
-  if (kTPCTOF_Cent){
-    // For the moment we set V0A as the reference centrality estimator, and test the other ones:
-    // 1: V0A, 2: V0M, 3: CL1, 4: ZNA
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,2); // V0M
-    RegisterTask(isMC,isAOD, kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,3); // CL1
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,4); // ZNA
-
-  }  
-
-  if(kTPCTOF_Sys){
-
-    // TPC PID
-    if (!isMC){
-      // 84%
-      //RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl0[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); 
-      //RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,-0.835,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);
-      // 70%
-      RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); 
-      // 60%
-      RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); 
-      //RegisterTaskPID2(isMC,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,-0.184,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);
-      // 40%
-      RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl3[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); 
-      //RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,0.265,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);
-    }
-
-    // TOF PID
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],2.0,0,AliHFEextraCuts::kBoth);
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],4.0,0,AliHFEextraCuts::kBoth);
-    // TOF latest mismatch - helps nothing
-    //RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,1,AliHFEextraCuts::kBoth);
-
-    // ITS hits and SPD request
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,4,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,3,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst);
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,4,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst);
-    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst);
-
-    // TPC clusters
-    RegisterTask(isMC,isAOD,100,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);
-    RegisterTask(isMC,isAOD,120,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);
-    // TPC clusters PID
-    RegisterTask(isMC,isAOD,kDefTPCcl,100,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); 
-  }
-
-   if(kTPCTOFTRD_Ref){
-
-      RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger);
-
-  }
-  
-  return NULL;
-}
-
-
-//===============================================================================
-
-AliAnalysisTask *RegisterTask(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80, 
-                             Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0, 
-                             Double_t *tpcdEdxcutlow=NULL, 
-                             Double_t *tpcdEdxcuthigh=NULL, 
-                             //Double_t tpcs=-0.0113, Double_t tpcu=3.09, 
-                             Double_t tofs=3., Int_t tofm=0,
-                             Int_t itshitpixel = AliHFEextraCuts::kBoth, Int_t icent=1, 
-                             Bool_t withetacorrection = kFALSE){
-
-  Int_t idcaxy = (Int_t)(dcaxy*10.);
-  Int_t idcaz = (Int_t)(dcaz*10.);
-  Int_t tpclow = 0;
-  if(tpcdEdxcutlow) tpclow = (Int_t) (tpcdEdxcutlow[0]*1000.);
-  Int_t itofs = (Int_t)(tofs*10.);
-  Int_t ipixelany = itshitpixel;
-  Int_t ietacorr = 0;
-  if(withetacorrection) ietacorr = 1;
-
-  printf("Argument passed to function to determine the centrality estimator %i\n", icent);
-
-  if (icent == 2) TString cesti("V0M");
-  else if (icent == 3) TString cesti("CL1");
-  else if (icent == 4) TString cesti("ZNA");
-  else TString cesti("V0A");
-
-  
-  TString appendix(TString::Format("centTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dce%s",tpcCls,
-                                  tpcClsPID,itsCls,idcaxy,idcaz,tpclow,itofs,tofm,ipixelany,cesti.Data()));
-  printf("Add macro appendix %s\n", appendix.Data());
-
-
-  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEpPb.C");
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
-  AliAnalysisTaskHFE *task = ConfigHFEpPb(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz, 
-                                         tpcdEdxcutlow,tpcdEdxcuthigh,
-                                         tofs,tofm,itshitpixel,icent);
-
-  if(isAOD)
-    task->SetAODAnalysis();
-  else
-    task->SetESDAnalysis();
-  if (useMC)
-    task->SetHasMCData(kTRUE);
-  else{
-    task->SetHasMCData(kFALSE);
-  }
-  task->SelectCollisionCandidates(AliVEvent::kINT7);
-
-  TString containerName = mgr->GetCommonFileName();
-  containerName += ":HFEtask";
-  containerName += appendix.Data();
-  printf("container name: %s\n", containerName.Data());
-  //create data containers
-  task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()), 
-                                             TList::Class(), AliAnalysisManager::kOutputContainer, 
-                                             containerName.Data()));
-  task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(), 
-                                             AliAnalysisManager::kOutputContainer, 
-                                             containerName.Data()));
-  mgr->ConnectInput(task,  0, cinput );
-
-  mgr->AddTask(task);
-  return NULL;
-}
-
-//===============================================================================
-
-AliAnalysisTask *RegisterTaskPID2(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80, 
-                                 Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0, 
-                                 Double_t tpcs=-0.0113, Double_t tpcu=3.09, Double_t tofs=3., 
-                                 Int_t tofm=0,
-                                 Int_t itshitpixel = AliHFEextraCuts::kBoth, 
-                                 Bool_t withetacorrection = kTRUE,
-          Int_t TRDtrigger=0){
-  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEmbpPb.C");
-  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
-  AliAnalysisTaskHFE *task = ConfigHFEmbpPb(useMC,isAOD, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz, 
-                                            tpcs,tpcu,tofs,tofm,3.,kFALSE,kTRUE,kFALSE,itshitpixel,withetacorrection,0,TRDtrigger);
-  if(isAOD)
-    task->SetAODAnalysis();
-  else
-    task->SetESDAnalysis();
-  if (useMC)
-    task->SetHasMCData(kTRUE);
-  else{
-    task->SetHasMCData(kFALSE);
-  }
-
-  if(TRDtrigger==0) task->SelectCollisionCandidates(AliVEvent::kINT7);
-  else task->SelectCollisionCandidates(AliVEvent::kTRD);
-  Int_t idcaxy = (Int_t)(dcaxy*10.);
-  Int_t idcaz = (Int_t)(dcaz*10.);
-  Int_t itpcs = (Int_t)(tpcs*1000.);
-  Int_t itofs = (Int_t)(tofs*10.);
-  Int_t ipixelany = itshitpixel;
-  Int_t ietacorr = 0;
-  if(withetacorrection) ietacorr = 1;
-  
-  TString appendix(TString::Format("mbTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dtrdtrg%d",tpcCls,
-                                  tpcClsPID,itsCls,idcaxy,idcaz,itpcs,itofs,tofm,ipixelany,TRDtrigger));
-  printf("Add macro appendix %s\n", appendix.Data());
-
-  TString containerName = mgr->GetCommonFileName();
-  containerName += ":HFEtask";
-  containerName += appendix.Data();
-  printf("container name: %s\n", containerName.Data());
-
-  //create data containers
-  task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()), 
-                                             TList::Class(), AliAnalysisManager::kOutputContainer, 
-                                             containerName.Data()));
-  task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(), 
-                                             AliAnalysisManager::kOutputContainer, 
-                                             containerName.Data()));
-  mgr->ConnectInput(task,  0, cinput );
-
-  mgr->AddTask(task);
-  return NULL;
-}
-
-
-//=========================================================================
+AliAnalysisTask *AddTaskHFEpPb(Bool_t isMC = kFALSE,\r
+                               Bool_t isAOD = kFALSE,\r
+                               Bool_t kTPCTOF_Ref = kTRUE,\r
+                               Bool_t kTPC_Only = kFALSE,\r
+                               Bool_t kTPCTOF_Cent = kFALSE,\r
+                               Bool_t kTPCTOF_Sys = kFALSE,\r
+                              Bool_t kTPCTOFTRD_Ref = kFALSE,\r
+                               int TRDtrigger = 0\r
+  ){\r
+  //get the current analysis manager\r
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+  if (!mgr) {\r
+    Error("AddTaskHFEpPb", "No analysis manager found.");\r
+    return 0;\r
+  }\r
+  \r
+  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();\r
+  \r
+  //@@ 0 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r
+  \r
+  // Default settings \r
+  const int kDefITScl = 4;\r
+  const int kDefTPCcl = 110;\r
+  const int kDefTPCclPID = 80;\r
+  const double kDefDCAr = 1.;\r
+  const double kDefDCAz = 2.;\r
+  \r
+  // 24.02.2013 After the latest fits, mean is 0 and sigma is 1\r
+  const double kDefTPCs = 0;\r
+  const double kDefTPCu = 3;   \r
+  const double kDefTOFs = 3.;\r
+  //const int TRDtrigger = 1; // trd trigger type\r
+  if(!kTPCTOFTRD_Ref) TRDtrigger = 0;\r
+  \r
+  Double_t dEdxlm[12] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};  //  50%\r
+  Double_t dEdxhm[12] = {3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0,3.0};\r
+  // For systematics:\r
+  Double_t tpcl0[12]  = {-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0};  //  84%\r
+  Double_t tpcl1[12]  = {-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53,-0.53};  //  70%\r
+  Double_t tpcl2[12]  = {-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26};  //  60%\r
+  Double_t tpcl3[12]  = {0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25};  //   40%/   40%\r
+\r
+  \r
+  // For TPC only\r
+  const double kDefTPCs1 = 0.0;\r
+  const double kDefTPCu1 = 3.0;\r
+  \r
+  if(kTPC_Only){\r
+    // for the moment (09.02.2013) use the same as TOF-TPC. Refine later on\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth); // 50%\r
+  }\r
+  \r
+  //------------------------------//\r
+  //   TPC-TOF analysis\r
+  //------------------------------//\r
+  \r
+  if(kTPCTOF_Ref){\r
+    // Reference task\r
+    // with centrality V0A\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); // 50%\r
+    \r
+    // One cross-check without centrality, also 50%\r
+    RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+    \r
+  }\r
+\r
+  if (kTPCTOF_Cent){\r
+    // For the moment we set V0A as the reference centrality estimator, and test the other ones:\r
+    // 1: V0A, 2: V0M, 3: CL1, 4: ZNA\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,2); // V0M\r
+    RegisterTask(isMC,isAOD, kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,3); // CL1\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,4); // ZNA\r
+\r
+  }  \r
+\r
+  if(kTPCTOF_Sys){\r
+\r
+    // TPC PID\r
+    if (!isMC){\r
+      // 84%\r
+      //RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl0[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); \r
+      //RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,-0.835,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+      // 70%\r
+      RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); \r
+      // 60%\r
+      RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); \r
+      //RegisterTaskPID2(isMC,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,-0.184,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+      // 40%\r
+      RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl3[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); \r
+      //RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,0.265,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+    }\r
+\r
+    // TOF PID\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],2.0,0,AliHFEextraCuts::kBoth);\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],4.0,0,AliHFEextraCuts::kBoth);\r
+    // TOF latest mismatch - helps nothing\r
+    //RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,1,AliHFEextraCuts::kBoth);\r
+\r
+    // ITS hits and SPD request\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,4,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,3,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst);\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,4,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst);\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst);\r
+\r
+    // TPC clusters\r
+    RegisterTask(isMC,isAOD,100,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+    RegisterTask(isMC,isAOD,120,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth);\r
+    // TPC clusters PID\r
+    RegisterTask(isMC,isAOD,kDefTPCcl,100,kDefITScl,kDefDCAr,kDefDCAz,&dEdxlm[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth); \r
+  }\r
+\r
+   if(kTPCTOFTRD_Ref){\r
+\r
+      RegisterTaskPID2(isMC,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger);\r
+\r
+  }\r
\r
+  \r
+  return NULL;\r
+}\r
+\r
+\r
+//===============================================================================\r
+\r
+AliAnalysisTask *RegisterTask(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80, \r
+                             Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0, \r
+                             Double_t *tpcdEdxcutlow=NULL, \r
+                             Double_t *tpcdEdxcuthigh=NULL, \r
+                             //Double_t tpcs=-0.0113, Double_t tpcu=3.09, \r
+                             Double_t tofs=3., Int_t tofm=0,\r
+                             Int_t itshitpixel = AliHFEextraCuts::kBoth, Int_t icent=1, \r
+                             Bool_t withetacorrection = kFALSE){\r
+\r
+  Int_t idcaxy = (Int_t)(dcaxy*10.);\r
+  Int_t idcaz = (Int_t)(dcaz*10.);\r
+  Int_t tpclow = 0;\r
+  if(tpcdEdxcutlow) tpclow = (Int_t) (tpcdEdxcutlow[0]*1000.);\r
+  Int_t itofs = (Int_t)(tofs*10.);\r
+  Int_t ipixelany = itshitpixel;\r
+  Int_t ietacorr = 0;\r
+  if(withetacorrection) ietacorr = 1;\r
+\r
+  printf("Argument passed to function to determine the centrality estimator %i\n", icent);\r
+\r
+  if (icent == 2) TString cesti("V0M");\r
+  else if (icent == 3) TString cesti("CL1");\r
+  else if (icent == 4) TString cesti("ZNA");\r
+  else TString cesti("V0A");\r
+\r
+  \r
+  TString appendix(TString::Format("centTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dce%s",tpcCls,\r
+                                  tpcClsPID,itsCls,idcaxy,idcaz,tpclow,itofs,tofm,ipixelany,cesti.Data()));\r
+  printf("Add macro appendix %s\n", appendix.Data());\r
+\r
+\r
+  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEpPb.C");\r
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();\r
+  AliAnalysisTaskHFE *task = ConfigHFEpPb(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz, \r
+                                         tpcdEdxcutlow,tpcdEdxcuthigh,\r
+                                         tofs,tofm,itshitpixel,icent);\r
+\r
+  if(isAOD)\r
+    task->SetAODAnalysis();\r
+  else\r
+    task->SetESDAnalysis();\r
+  if (useMC)\r
+    task->SetHasMCData(kTRUE);\r
+  else{\r
+    task->SetHasMCData(kFALSE);\r
+  }\r
+  task->SelectCollisionCandidates(AliVEvent::kINT7);\r
+\r
+  TString containerName = mgr->GetCommonFileName();\r
+  containerName += ":HFEtask";\r
+  containerName += appendix.Data();\r
+  printf("container name: %s\n", containerName.Data());\r
\r
+  //create data containers\r
+  task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()), \r
+                                             TList::Class(), AliAnalysisManager::kOutputContainer, \r
+                                             containerName.Data()));\r
+  task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(), \r
+                                             AliAnalysisManager::kOutputContainer, \r
+                                             containerName.Data()));\r
+  mgr->ConnectInput(task,  0, cinput );\r
+\r
+  mgr->AddTask(task);\r
+  return NULL;\r
+}\r
+\r
+//===============================================================================\r
+\r
+AliAnalysisTask *RegisterTaskPID2(Bool_t useMC, Bool_t isAOD, Int_t tpcCls=120, Int_t tpcClsPID = 80, \r
+                                 Int_t itsCls=4, Double_t dcaxy=1.0, Double_t dcaz=2.0, \r
+                                 Double_t tpcs=-0.0113, Double_t tpcu=3.09, Double_t tofs=3., \r
+                                 Int_t tofm=0,\r
+                                 Int_t itshitpixel = AliHFEextraCuts::kBoth, \r
+                                 Bool_t withetacorrection = kTRUE,\r
+          Int_t TRDtrigger=0){\r
+  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEmbpPb.C");\r
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();\r
+  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();\r
+  AliAnalysisTaskHFE *task = ConfigHFEmbpPb(useMC,isAOD, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz, \r
+                                            tpcs,tpcu,tofs,tofm,3.,kFALSE,kTRUE,kFALSE,itshitpixel,withetacorrection,0,TRDtrigger);\r
+  if(isAOD)\r
+    task->SetAODAnalysis();\r
+  else\r
+    task->SetESDAnalysis();\r
+  if (useMC)\r
+    task->SetHasMCData(kTRUE);\r
+  else{\r
+    task->SetHasMCData(kFALSE);\r
+  }\r
+\r
+  if(TRDtrigger==0) task->SelectCollisionCandidates(AliVEvent::kINT7);\r
+  else task->SelectCollisionCandidates(AliVEvent::kTRD);\r
\r
+  Int_t idcaxy = (Int_t)(dcaxy*10.);\r
+  Int_t idcaz = (Int_t)(dcaz*10.);\r
+  Int_t itpcs = (Int_t)(tpcs*1000.);\r
+  Int_t itofs = (Int_t)(tofs*10.);\r
+  Int_t ipixelany = itshitpixel;\r
+  Int_t ietacorr = 0;\r
+  if(withetacorrection) ietacorr = 1;\r
+  \r
+  TString appendix(TString::Format("mbTPCc%dTPCp%dITS%dDCAr%dz%dTPCs%dTOFs%dm%ipa%dtrdtrg%d",tpcCls,\r
+                                  tpcClsPID,itsCls,idcaxy,idcaz,itpcs,itofs,tofm,ipixelany,TRDtrigger));\r
+  printf("Add macro appendix %s\n", appendix.Data());\r
+\r
+  TString containerName = mgr->GetCommonFileName();\r
+  containerName += ":HFEtask";\r
+  containerName += appendix.Data();\r
+  printf("container name: %s\n", containerName.Data());\r
+\r
+  //create data containers\r
+  task->ConnectOutput(1, mgr->CreateContainer(Form("HFE_Results_%s", appendix.Data()), \r
+                                             TList::Class(), AliAnalysisManager::kOutputContainer, \r
+                                             containerName.Data()));\r
+  task->ConnectOutput(2, mgr->CreateContainer(Form("HFE_QA_%s", appendix.Data()), TList::Class(), \r
+                                             AliAnalysisManager::kOutputContainer, \r
+                                             containerName.Data()));\r
+  mgr->ConnectInput(task,  0, cinput );\r
+\r
+  mgr->AddTask(task);\r
+  return NULL;\r
+}\r
+\r
+\r
+//=========================================================================\r