ROOT logo
AliAnalysisTask *AddTaskHFEpPb(Bool_t MCthere = kFALSE,
                               Bool_t isAOD = kFALSE,
                               Bool_t kTPCTOF_Ref = kTRUE,
                               Bool_t kTPC_Ref = kFALSE,
                               Bool_t kTPCTOF_Cent = kFALSE,
                               Bool_t kTPCTOF_Sys = kFALSE,
                               Bool_t kTPCTOF_TPCPID = kFALSE,
                               Bool_t kITS_Sys = kFALSE,
                               Bool_t kTPCTOFTRD_Ref = kFALSE,
                               Bool_t kTPCTOFTRD_mbPID = kFALSE,
			       Bool_t kTPCTOFTRD_PID1 = kFALSE,
                               Bool_t kTPCTOFTRD_PID2 = 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 
  // 15.04.2013 The ITS cut changes now officially from 3 to 4
  const int kDefITScl = 4;
  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.0;
  const double kDefTPCu = 3.0;   
  const double kDefTOFs = 3.0;

  // NEW SPLINES + CORRECTIONS: mean 0, width 1
  // mean is actually 0.06 (abs(eta)<0.6)
  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%

  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%
  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%
  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%

  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%
  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%
  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%
  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%
  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%

  // For TPC only
  const double kDefTPCs1 = 0.0;
  const double kDefTPCu1 = 3.0;

  // eta cut
  Int_t etacut=0; // eta cut off

  // 24.02.2013 From now on, use task with centrality by default and keep one without for cross check
  // 15.04.2013 We do not need the minimum bias task any more, take out by default

  if(kTPC_Ref){
    // Reference, 69% TPC PID, with centrality V0A
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1);
  }

  //------------------------------//
  //   TPC-TOF analysis
  //------------------------------//

  if(kTPCTOF_Ref){
    // Reference task, 69% TPC PID, with centrality V0A
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1);
  }

  if (kTPCTOF_TPCPID){
    // TPC PID
    if (!MCthere){
      //TPC only
      //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1);
      //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl0[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1);

      //TPC-TOF
      //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      //RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      // new pT bins
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl0[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl2[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl3[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl4[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl5[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl6[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
      RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl7[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    }
  }

  if (kITS_Sys){
    // ITS hits and SPD request
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,3,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,3,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,4,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,5,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kFirst,1); 
  }

  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(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,2); // V0M
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,3); // CL1
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,4); // ZNA
  }

  if(kTPCTOF_Sys){
    // TOF PID
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],2.0,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],2.5,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],3.5,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],4.0,0,AliHFEextraCuts::kBoth,1); 

    // TPC clusters
    RegisterTask(MCthere,isAOD,80,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,90,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,100,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,120,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,130,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,140,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 

    // TPC clusters PID
    RegisterTask(MCthere,isAOD,kDefTPCcl,60,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,90,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,100,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
    RegisterTask(MCthere,isAOD,kDefTPCcl,110,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],kDefTOFs,0,AliHFEextraCuts::kBoth,1); 
  }
  
  //------------------------------//
  //   TPC-TOF-TRD analysis
  //------------------------------//

  if(kTPCTOFTRD_Ref){
    RegisterTaskPID2(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,kDefTOFs,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger);
    RegisterTaskPID2(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger);
  }

  if(kTPCTOFTRD_mbPID){
    // without TOF
    RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger,6,4,"TRD,TPC",etacut);
    RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger,6,4,"TPC,TRD",etacut);
    RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger,6,2,"TRD,TPC",etacut);
    RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger,5,4,"TRD,TPC",etacut);
    RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger,5,4,"TPC,TRD",etacut);
    RegisterTaskPID2mbTRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,kDefTPCs,kDefTPCu,0,0,AliHFEextraCuts::kBoth,kFALSE,TRDtrigger,5,2,"TRD,TPC",etacut);
  }

  if(kTPCTOFTRD_PID1){
    // without TOF
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,1,5,4,"TRD,TPC");
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,1,5,4,"TPC,TRD");
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,1,6,4,"TRD,TPC");
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,1,6,4,"TPC,TRD");
  }

  if(kTPCTOFTRD_PID2){
    // without TOF
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,2,5,4,"TRD,TPC");
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,2,5,4,"TPC,TRD");
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,2,6,4,"TRD,TPC");
    RegisterTaskPID2TRD(MCthere,isAOD,kDefTPCcl,kDefTPCclPID,kDefITScl,kDefDCAr,kDefDCAz,&tpcl1[0],&dEdxhm[0],0,0,AliHFEextraCuts::kBoth,1,TRDtrigger,2,6,4,"TPC,TRD");
  }

  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){

  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;

  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());
  printf("Centrality estimator %s\n", cesti.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<2) 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%dtrdt%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;
}

//===============================================================================
// TRD PID
//===============================================================================

AliAnalysisTask *RegisterTaskPID2mbTRD(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,Int_t trdl=6, Int_t trde=4,TString detector="TRD,TPC",Int_t etacut=0){

  TString detused=detector.Copy();
  TPRegexp(",").Substitute(detused,"","g");
  printf("detectors in use %s %s \n",detector.Data(),detused.Data());

  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%dp%dITS%dr%dz%dTPCs%dTOFs%dm%ipa%dTRDt%dl%ie%i%se%i",tpcCls,
				   tpcClsPID,itsCls,idcaxy,idcaz,itpcs,itofs,tofm,ipixelany,TRDtrigger,trdl,trde,detused.Data(),etacut));
  printf("Add macro appendix %s\n", appendix.Data());

  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEmbpPbTRD.C");
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
  AliAnalysisTaskHFE *task = ConfigHFEmbpPbTRD(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz,
                             tpcs,tpcu,tofs,tofm,3.,kFALSE,kTRUE,kFALSE,itshitpixel,withetacorrection,0,TRDtrigger,trdl,trde,detector,etacut);

  if(isAOD)
    task->SetAODAnalysis();
  else
    task->SetESDAnalysis();

  if(useMC)
    task->SetHasMCData(kTRUE);
  else{
    task->SetHasMCData(kFALSE);
  }

  if(TRDtrigger<2) task->SelectCollisionCandidates(AliVEvent::kINT7);
  else task->SelectCollisionCandidates(AliVEvent::kTRD);

  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 *RegisterTaskPID2TRD(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 tofs=3., Int_t tofm=0,
				     Int_t itshitpixel = AliHFEextraCuts::kBoth, Int_t icent=1,
				     Int_t TRDtrigger=0,Int_t trdpidmethod=1, Int_t trdl=6, Int_t trde=4,TString detector){

  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/hfe/macros/configs/pPb/ConfigHFEpPbTRD.C");
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();

  TString detused=detector.Copy();
  TPRegexp(",").Substitute(detused,"","g");
  printf("detectors in use %s %s \n",detector.Data(),detused.Data());

  if (icent == 2) TString cesti("V0M");
  else if (icent == 3) TString cesti("CL1");
  else if (icent == 4) TString cesti("ZNA");
  else TString cesti("V0A");

  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;

  TString appendix(TString::Format("TPCc%dp%dITS%dr%dz%dTPCs%dTOFs%dm%ipa%dTRDt%dm%il%ie%i%sc%s",tpcCls,
                   tpcClsPID,itsCls,idcaxy,idcaz,tpclow,itofs,tofm,ipixelany,TRDtrigger,trdpidmethod,trdl,trde,detused.Data(),cesti.Data()));
  printf("Add macro appendix %s\n", appendix.Data());

  AliAnalysisTaskHFE *task = ConfigHFEpPbTRD(useMC, isAOD, appendix, tpcCls, tpcClsPID, itsCls, dcaxy, dcaz,
                             tpcdEdxcutlow,tpcdEdxcuthigh, tofs, tofm, itshitpixel, icent, -0.8, 0.8, TRDtrigger,trdpidmethod,trdl,trde,detector);

  if(isAOD)
    task->SetAODAnalysis();
  else
    task->SetESDAnalysis();

  if (useMC)
    task->SetHasMCData(kTRUE);
  else{
    task->SetHasMCData(kFALSE);
  }

  if(TRDtrigger<2) task->SelectCollisionCandidates(AliVEvent::kINT7);
  else task->SelectCollisionCandidates(AliVEvent::kTRD);

  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;
}
 AddTaskHFEpPb.C:1
 AddTaskHFEpPb.C:2
 AddTaskHFEpPb.C:3
 AddTaskHFEpPb.C:4
 AddTaskHFEpPb.C:5
 AddTaskHFEpPb.C:6
 AddTaskHFEpPb.C:7
 AddTaskHFEpPb.C:8
 AddTaskHFEpPb.C:9
 AddTaskHFEpPb.C:10
 AddTaskHFEpPb.C:11
 AddTaskHFEpPb.C:12
 AddTaskHFEpPb.C:13
 AddTaskHFEpPb.C:14
 AddTaskHFEpPb.C:15
 AddTaskHFEpPb.C:16
 AddTaskHFEpPb.C:17
 AddTaskHFEpPb.C:18
 AddTaskHFEpPb.C:19
 AddTaskHFEpPb.C:20
 AddTaskHFEpPb.C:21
 AddTaskHFEpPb.C:22
 AddTaskHFEpPb.C:23
 AddTaskHFEpPb.C:24
 AddTaskHFEpPb.C:25
 AddTaskHFEpPb.C:26
 AddTaskHFEpPb.C:27
 AddTaskHFEpPb.C:28
 AddTaskHFEpPb.C:29
 AddTaskHFEpPb.C:30
 AddTaskHFEpPb.C:31
 AddTaskHFEpPb.C:32
 AddTaskHFEpPb.C:33
 AddTaskHFEpPb.C:34
 AddTaskHFEpPb.C:35
 AddTaskHFEpPb.C:36
 AddTaskHFEpPb.C:37
 AddTaskHFEpPb.C:38
 AddTaskHFEpPb.C:39
 AddTaskHFEpPb.C:40
 AddTaskHFEpPb.C:41
 AddTaskHFEpPb.C:42
 AddTaskHFEpPb.C:43
 AddTaskHFEpPb.C:44
 AddTaskHFEpPb.C:45
 AddTaskHFEpPb.C:46
 AddTaskHFEpPb.C:47
 AddTaskHFEpPb.C:48
 AddTaskHFEpPb.C:49
 AddTaskHFEpPb.C:50
 AddTaskHFEpPb.C:51
 AddTaskHFEpPb.C:52
 AddTaskHFEpPb.C:53
 AddTaskHFEpPb.C:54
 AddTaskHFEpPb.C:55
 AddTaskHFEpPb.C:56
 AddTaskHFEpPb.C:57
 AddTaskHFEpPb.C:58
 AddTaskHFEpPb.C:59
 AddTaskHFEpPb.C:60
 AddTaskHFEpPb.C:61
 AddTaskHFEpPb.C:62
 AddTaskHFEpPb.C:63
 AddTaskHFEpPb.C:64
 AddTaskHFEpPb.C:65
 AddTaskHFEpPb.C:66
 AddTaskHFEpPb.C:67
 AddTaskHFEpPb.C:68
 AddTaskHFEpPb.C:69
 AddTaskHFEpPb.C:70
 AddTaskHFEpPb.C:71
 AddTaskHFEpPb.C:72
 AddTaskHFEpPb.C:73
 AddTaskHFEpPb.C:74
 AddTaskHFEpPb.C:75
 AddTaskHFEpPb.C:76
 AddTaskHFEpPb.C:77
 AddTaskHFEpPb.C:78
 AddTaskHFEpPb.C:79
 AddTaskHFEpPb.C:80
 AddTaskHFEpPb.C:81
 AddTaskHFEpPb.C:82
 AddTaskHFEpPb.C:83
 AddTaskHFEpPb.C:84
 AddTaskHFEpPb.C:85
 AddTaskHFEpPb.C:86
 AddTaskHFEpPb.C:87
 AddTaskHFEpPb.C:88
 AddTaskHFEpPb.C:89
 AddTaskHFEpPb.C:90
 AddTaskHFEpPb.C:91
 AddTaskHFEpPb.C:92
 AddTaskHFEpPb.C:93
 AddTaskHFEpPb.C:94
 AddTaskHFEpPb.C:95
 AddTaskHFEpPb.C:96
 AddTaskHFEpPb.C:97
 AddTaskHFEpPb.C:98
 AddTaskHFEpPb.C:99
 AddTaskHFEpPb.C:100
 AddTaskHFEpPb.C:101
 AddTaskHFEpPb.C:102
 AddTaskHFEpPb.C:103
 AddTaskHFEpPb.C:104
 AddTaskHFEpPb.C:105
 AddTaskHFEpPb.C:106
 AddTaskHFEpPb.C:107
 AddTaskHFEpPb.C:108
 AddTaskHFEpPb.C:109
 AddTaskHFEpPb.C:110
 AddTaskHFEpPb.C:111
 AddTaskHFEpPb.C:112
 AddTaskHFEpPb.C:113
 AddTaskHFEpPb.C:114
 AddTaskHFEpPb.C:115
 AddTaskHFEpPb.C:116
 AddTaskHFEpPb.C:117
 AddTaskHFEpPb.C:118
 AddTaskHFEpPb.C:119
 AddTaskHFEpPb.C:120
 AddTaskHFEpPb.C:121
 AddTaskHFEpPb.C:122
 AddTaskHFEpPb.C:123
 AddTaskHFEpPb.C:124
 AddTaskHFEpPb.C:125
 AddTaskHFEpPb.C:126
 AddTaskHFEpPb.C:127
 AddTaskHFEpPb.C:128
 AddTaskHFEpPb.C:129
 AddTaskHFEpPb.C:130
 AddTaskHFEpPb.C:131
 AddTaskHFEpPb.C:132
 AddTaskHFEpPb.C:133
 AddTaskHFEpPb.C:134
 AddTaskHFEpPb.C:135
 AddTaskHFEpPb.C:136
 AddTaskHFEpPb.C:137
 AddTaskHFEpPb.C:138
 AddTaskHFEpPb.C:139
 AddTaskHFEpPb.C:140
 AddTaskHFEpPb.C:141
 AddTaskHFEpPb.C:142
 AddTaskHFEpPb.C:143
 AddTaskHFEpPb.C:144
 AddTaskHFEpPb.C:145
 AddTaskHFEpPb.C:146
 AddTaskHFEpPb.C:147
 AddTaskHFEpPb.C:148
 AddTaskHFEpPb.C:149
 AddTaskHFEpPb.C:150
 AddTaskHFEpPb.C:151
 AddTaskHFEpPb.C:152
 AddTaskHFEpPb.C:153
 AddTaskHFEpPb.C:154
 AddTaskHFEpPb.C:155
 AddTaskHFEpPb.C:156
 AddTaskHFEpPb.C:157
 AddTaskHFEpPb.C:158
 AddTaskHFEpPb.C:159
 AddTaskHFEpPb.C:160
 AddTaskHFEpPb.C:161
 AddTaskHFEpPb.C:162
 AddTaskHFEpPb.C:163
 AddTaskHFEpPb.C:164
 AddTaskHFEpPb.C:165
 AddTaskHFEpPb.C:166
 AddTaskHFEpPb.C:167
 AddTaskHFEpPb.C:168
 AddTaskHFEpPb.C:169
 AddTaskHFEpPb.C:170
 AddTaskHFEpPb.C:171
 AddTaskHFEpPb.C:172
 AddTaskHFEpPb.C:173
 AddTaskHFEpPb.C:174
 AddTaskHFEpPb.C:175
 AddTaskHFEpPb.C:176
 AddTaskHFEpPb.C:177
 AddTaskHFEpPb.C:178
 AddTaskHFEpPb.C:179
 AddTaskHFEpPb.C:180
 AddTaskHFEpPb.C:181
 AddTaskHFEpPb.C:182
 AddTaskHFEpPb.C:183
 AddTaskHFEpPb.C:184
 AddTaskHFEpPb.C:185
 AddTaskHFEpPb.C:186
 AddTaskHFEpPb.C:187
 AddTaskHFEpPb.C:188
 AddTaskHFEpPb.C:189
 AddTaskHFEpPb.C:190
 AddTaskHFEpPb.C:191
 AddTaskHFEpPb.C:192
 AddTaskHFEpPb.C:193
 AddTaskHFEpPb.C:194
 AddTaskHFEpPb.C:195
 AddTaskHFEpPb.C:196
 AddTaskHFEpPb.C:197
 AddTaskHFEpPb.C:198
 AddTaskHFEpPb.C:199
 AddTaskHFEpPb.C:200
 AddTaskHFEpPb.C:201
 AddTaskHFEpPb.C:202
 AddTaskHFEpPb.C:203
 AddTaskHFEpPb.C:204
 AddTaskHFEpPb.C:205
 AddTaskHFEpPb.C:206
 AddTaskHFEpPb.C:207
 AddTaskHFEpPb.C:208
 AddTaskHFEpPb.C:209
 AddTaskHFEpPb.C:210
 AddTaskHFEpPb.C:211
 AddTaskHFEpPb.C:212
 AddTaskHFEpPb.C:213
 AddTaskHFEpPb.C:214
 AddTaskHFEpPb.C:215
 AddTaskHFEpPb.C:216
 AddTaskHFEpPb.C:217
 AddTaskHFEpPb.C:218
 AddTaskHFEpPb.C:219
 AddTaskHFEpPb.C:220
 AddTaskHFEpPb.C:221
 AddTaskHFEpPb.C:222
 AddTaskHFEpPb.C:223
 AddTaskHFEpPb.C:224
 AddTaskHFEpPb.C:225
 AddTaskHFEpPb.C:226
 AddTaskHFEpPb.C:227
 AddTaskHFEpPb.C:228
 AddTaskHFEpPb.C:229
 AddTaskHFEpPb.C:230
 AddTaskHFEpPb.C:231
 AddTaskHFEpPb.C:232
 AddTaskHFEpPb.C:233
 AddTaskHFEpPb.C:234
 AddTaskHFEpPb.C:235
 AddTaskHFEpPb.C:236
 AddTaskHFEpPb.C:237
 AddTaskHFEpPb.C:238
 AddTaskHFEpPb.C:239
 AddTaskHFEpPb.C:240
 AddTaskHFEpPb.C:241
 AddTaskHFEpPb.C:242
 AddTaskHFEpPb.C:243
 AddTaskHFEpPb.C:244
 AddTaskHFEpPb.C:245
 AddTaskHFEpPb.C:246
 AddTaskHFEpPb.C:247
 AddTaskHFEpPb.C:248
 AddTaskHFEpPb.C:249
 AddTaskHFEpPb.C:250
 AddTaskHFEpPb.C:251
 AddTaskHFEpPb.C:252
 AddTaskHFEpPb.C:253
 AddTaskHFEpPb.C:254
 AddTaskHFEpPb.C:255
 AddTaskHFEpPb.C:256
 AddTaskHFEpPb.C:257
 AddTaskHFEpPb.C:258
 AddTaskHFEpPb.C:259
 AddTaskHFEpPb.C:260
 AddTaskHFEpPb.C:261
 AddTaskHFEpPb.C:262
 AddTaskHFEpPb.C:263
 AddTaskHFEpPb.C:264
 AddTaskHFEpPb.C:265
 AddTaskHFEpPb.C:266
 AddTaskHFEpPb.C:267
 AddTaskHFEpPb.C:268
 AddTaskHFEpPb.C:269
 AddTaskHFEpPb.C:270
 AddTaskHFEpPb.C:271
 AddTaskHFEpPb.C:272
 AddTaskHFEpPb.C:273
 AddTaskHFEpPb.C:274
 AddTaskHFEpPb.C:275
 AddTaskHFEpPb.C:276
 AddTaskHFEpPb.C:277
 AddTaskHFEpPb.C:278
 AddTaskHFEpPb.C:279
 AddTaskHFEpPb.C:280
 AddTaskHFEpPb.C:281
 AddTaskHFEpPb.C:282
 AddTaskHFEpPb.C:283
 AddTaskHFEpPb.C:284
 AddTaskHFEpPb.C:285
 AddTaskHFEpPb.C:286
 AddTaskHFEpPb.C:287
 AddTaskHFEpPb.C:288
 AddTaskHFEpPb.C:289
 AddTaskHFEpPb.C:290
 AddTaskHFEpPb.C:291
 AddTaskHFEpPb.C:292
 AddTaskHFEpPb.C:293
 AddTaskHFEpPb.C:294
 AddTaskHFEpPb.C:295
 AddTaskHFEpPb.C:296
 AddTaskHFEpPb.C:297
 AddTaskHFEpPb.C:298
 AddTaskHFEpPb.C:299
 AddTaskHFEpPb.C:300
 AddTaskHFEpPb.C:301
 AddTaskHFEpPb.C:302
 AddTaskHFEpPb.C:303
 AddTaskHFEpPb.C:304
 AddTaskHFEpPb.C:305
 AddTaskHFEpPb.C:306
 AddTaskHFEpPb.C:307
 AddTaskHFEpPb.C:308
 AddTaskHFEpPb.C:309
 AddTaskHFEpPb.C:310
 AddTaskHFEpPb.C:311
 AddTaskHFEpPb.C:312
 AddTaskHFEpPb.C:313
 AddTaskHFEpPb.C:314
 AddTaskHFEpPb.C:315
 AddTaskHFEpPb.C:316
 AddTaskHFEpPb.C:317
 AddTaskHFEpPb.C:318
 AddTaskHFEpPb.C:319
 AddTaskHFEpPb.C:320
 AddTaskHFEpPb.C:321
 AddTaskHFEpPb.C:322
 AddTaskHFEpPb.C:323
 AddTaskHFEpPb.C:324
 AddTaskHFEpPb.C:325
 AddTaskHFEpPb.C:326
 AddTaskHFEpPb.C:327
 AddTaskHFEpPb.C:328
 AddTaskHFEpPb.C:329
 AddTaskHFEpPb.C:330
 AddTaskHFEpPb.C:331
 AddTaskHFEpPb.C:332
 AddTaskHFEpPb.C:333
 AddTaskHFEpPb.C:334
 AddTaskHFEpPb.C:335
 AddTaskHFEpPb.C:336
 AddTaskHFEpPb.C:337
 AddTaskHFEpPb.C:338
 AddTaskHFEpPb.C:339
 AddTaskHFEpPb.C:340
 AddTaskHFEpPb.C:341
 AddTaskHFEpPb.C:342
 AddTaskHFEpPb.C:343
 AddTaskHFEpPb.C:344
 AddTaskHFEpPb.C:345
 AddTaskHFEpPb.C:346
 AddTaskHFEpPb.C:347
 AddTaskHFEpPb.C:348
 AddTaskHFEpPb.C:349
 AddTaskHFEpPb.C:350
 AddTaskHFEpPb.C:351
 AddTaskHFEpPb.C:352
 AddTaskHFEpPb.C:353
 AddTaskHFEpPb.C:354
 AddTaskHFEpPb.C:355
 AddTaskHFEpPb.C:356
 AddTaskHFEpPb.C:357
 AddTaskHFEpPb.C:358
 AddTaskHFEpPb.C:359
 AddTaskHFEpPb.C:360
 AddTaskHFEpPb.C:361
 AddTaskHFEpPb.C:362
 AddTaskHFEpPb.C:363
 AddTaskHFEpPb.C:364
 AddTaskHFEpPb.C:365
 AddTaskHFEpPb.C:366
 AddTaskHFEpPb.C:367
 AddTaskHFEpPb.C:368
 AddTaskHFEpPb.C:369
 AddTaskHFEpPb.C:370
 AddTaskHFEpPb.C:371
 AddTaskHFEpPb.C:372
 AddTaskHFEpPb.C:373
 AddTaskHFEpPb.C:374
 AddTaskHFEpPb.C:375
 AddTaskHFEpPb.C:376
 AddTaskHFEpPb.C:377
 AddTaskHFEpPb.C:378
 AddTaskHFEpPb.C:379
 AddTaskHFEpPb.C:380
 AddTaskHFEpPb.C:381
 AddTaskHFEpPb.C:382
 AddTaskHFEpPb.C:383
 AddTaskHFEpPb.C:384
 AddTaskHFEpPb.C:385
 AddTaskHFEpPb.C:386
 AddTaskHFEpPb.C:387
 AddTaskHFEpPb.C:388
 AddTaskHFEpPb.C:389
 AddTaskHFEpPb.C:390
 AddTaskHFEpPb.C:391
 AddTaskHFEpPb.C:392
 AddTaskHFEpPb.C:393
 AddTaskHFEpPb.C:394
 AddTaskHFEpPb.C:395
 AddTaskHFEpPb.C:396
 AddTaskHFEpPb.C:397
 AddTaskHFEpPb.C:398
 AddTaskHFEpPb.C:399
 AddTaskHFEpPb.C:400
 AddTaskHFEpPb.C:401
 AddTaskHFEpPb.C:402
 AddTaskHFEpPb.C:403
 AddTaskHFEpPb.C:404
 AddTaskHFEpPb.C:405
 AddTaskHFEpPb.C:406
 AddTaskHFEpPb.C:407
 AddTaskHFEpPb.C:408
 AddTaskHFEpPb.C:409
 AddTaskHFEpPb.C:410
 AddTaskHFEpPb.C:411
 AddTaskHFEpPb.C:412
 AddTaskHFEpPb.C:413
 AddTaskHFEpPb.C:414
 AddTaskHFEpPb.C:415
 AddTaskHFEpPb.C:416
 AddTaskHFEpPb.C:417
 AddTaskHFEpPb.C:418
 AddTaskHFEpPb.C:419
 AddTaskHFEpPb.C:420
 AddTaskHFEpPb.C:421
 AddTaskHFEpPb.C:422
 AddTaskHFEpPb.C:423
 AddTaskHFEpPb.C:424
 AddTaskHFEpPb.C:425
 AddTaskHFEpPb.C:426
 AddTaskHFEpPb.C:427
 AddTaskHFEpPb.C:428
 AddTaskHFEpPb.C:429
 AddTaskHFEpPb.C:430
 AddTaskHFEpPb.C:431
 AddTaskHFEpPb.C:432
 AddTaskHFEpPb.C:433
 AddTaskHFEpPb.C:434
 AddTaskHFEpPb.C:435