ROOT logo
//DEFINITION OF A FEW CONSTANTS
#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5))

const Float_t phimin = 0.;
const Float_t phimax = 2.*TMath::Pi();
const Float_t etamin = -0.9;
const Float_t etamax = 0.9;

const Int_t   mintrackrefsTPC = 0;
const Int_t   mintrackrefsITS = 0;

/* AddTask setting up the containers and adding the tasks for computing the efficiency of the Hybrid Tracks. Tasks works on ESDs and AODs (datatype established automatically).
Input:
hybridTrackDef: "2010" or "2011", indicates whether the 2010 definition or the 2011 definition of the hybrid tracks should be used. Only important in ESD.
prodType: Data or MC period, 
beamType: "pp", "pPb" or "PbPb"
triggerMask: Event Selection Trigger Mask
bSelHijingParticles: kTRUE, select only particles from Hijing event. kFALSE, select all particles of the cocktail
usePythiaxsec: kFALSE, do not use the Pythia cross section information file. This might reduce the number of errors and file opening issues. 
*/

void AddTaskHybridTrackEfficiency(TString hybridTrackDef = "2011", char *prodType = "LHC11h", TString beamType = "PbPb", UInt_t triggerMask = AliVEvent::kMB, Bool_t bSelHijingParticles = kFALSE, Bool_t usePythiaxsec = kFALSE)
{
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskHybridTrackEfficiency", "No analysis manager to connect to.");
    return NULL;
  }  
  TString dataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"

  if(dataType=="AOD") {
    AddTaskHybridTrackEfficiencyAOD(prodType, beamType, triggerMask, bSelHijingParticles, usePythiaxsec);
  }
  if(dataType=="ESD") {
    if(hybridTrackDef.Contains("2010"))
      AddTaskHybridTrackEfficiencyESD2010(prodType, beamType, triggerMask, bSelHijingParticles, usePythiaxsec);
    if(hybridTrackDef.Contains("2011"))
      AddTaskHybridTrackEfficiencyESD2011(prodType, beamType, triggerMask, bSelHijingParticles, usePythiaxsec);
  }
}

void AddTaskHybridTrackEfficiencyAOD(char *prodType = "LHC11h", TString beamType = "PbPb", UInt_t triggerMask = AliVEvent::kMB, Bool_t bSelHijingParticles = kFALSE, Bool_t usePythiaxsec = kFALSE)
{
  Int_t filterMask1; //standard global tracks
  Int_t filterMask2; //complementary tracks
  Int_t filterMask; //the sum: hybrid tracks

  TString strRunPeriod = TString(prodType);
  strRunPeriod.ToLower();

  if (strRunPeriod == "lhc10h" || strRunPeriod == "lhc11h" ||
      strRunPeriod == "lhc12a" || strRunPeriod == "lhc12b" || strRunPeriod == "lhc12c" || strRunPeriod == "lhc12d" ||
      strRunPeriod == "lhc12e" || strRunPeriod == "lhc12f" || strRunPeriod == "lhc12g" || strRunPeriod == "lhc12g" ||
      strRunPeriod == "lhc12h" || strRunPeriod == "lhc12i" ||
      strRunPeriod == "lhc13b" || strRunPeriod == "lhc13c" || strRunPeriod == "lhc13d" || strRunPeriod == "lhc13e" ||
      strRunPeriod == "lhc13f" || strRunPeriod == "lhc13g" ||
      strRunPeriod == "lhc12a15e" || strRunPeriod == "lhc13b4" || strRunPeriod == "lhc13b4_fix" ||
      strRunPeriod == "lhc13b4_plus" || strRunPeriod == "lhc12a15f" || strRunPeriod.Contains("lhc12a17") || strRunPeriod.Contains("lhc14a1")) {
    filterMask  = 768;
    filterMask1 = 256;
    filterMask2 = 512;
    bIncludeNoITS = kFALSE;
    if(strRunPeriod == "lhc10h") bIncludeNoITS = kTRUE;
  }
  else if (strRunPeriod == "lhc11a" || strRunPeriod == "lhc10hold" || strRunPeriod == "lhc12a15a" || strRunPeriod.Contains("lhc11a2")) {
    filterMask  = 272;
    filterMask1 = 16;
    filterMask2 = 256;
    bIncludeNoITS = kTRUE;
  }
  else {
    ::Error("AddTaskHybridTrackEfficiency","Period string not of predefined type. Add it to the list in this macro.");
    return NULL;
  }

  AliPWG4HighPtSpectra   *taskSpectraSUM   = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,1,triggerMask,"CENT_10_SUM",bSelHijingParticles,usePythiaxsec,filterMask ); //Sum: the hybrid tracks.
  AliPWG4HighPtSpectra   *taskSpectraRESTR = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,5,triggerMask,"CENT_10_RESTR",bSelHijingParticles,usePythiaxsec,filterMask1); //High quality tracks
  AliPWG4HighPtSpectra   *taskSpectraNOSPD = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,7,5,triggerMask,"CENT_10_COMPL",bSelHijingParticles,usePythiaxsec,filterMask2); //Complementary tracks
  if(beamType=="PbPb" || beamType=="pPb") { //also vary the centrality
    for(int cent = 0; cent<4; cent++) {
      AliPWG4HighPtSpectra *taskSpectraCent0 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,0,1,triggerMask,Form("CENT_%d_SUM",cent),bSelHijingParticles,usePythiaxsec,filterMask );
      AliPWG4HighPtSpectra *taskSpectraCent0 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,0,5,triggerMask,Form("CENT_%d_RESTR",cent),bSelHijingParticles,usePythiaxsec,filterMask1 );
      AliPWG4HighPtSpectra *taskSpectraCent0 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,7,5,triggerMask,Form("CENT_%d_COMPL",cent),bSelHijingParticles,usePythiaxsec,filterMask2 );
    }
  }
}

void AddTaskHybridTrackEfficiencyESD2010(char *prodType = "LHC10h", TString beamType = "PbPb", UInt_t triggerMask = AliVEvent::kMB, Bool_t bSelHijingParticles = kFALSE, Bool_t usePythiaxsec = kFALSE)
{
  AliPWG4HighPtSpectra *taskSpectra00cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,0,triggerMask,"CENT_10_RAA"  ,bSelHijingParticles,usePythiaxsec); // RAA track cuts
  AliPWG4HighPtSpectra *taskSpectra01cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,1,triggerMask,"CENT_10_RESTR",bSelHijingParticles,usePythiaxsec); // High quality tracks
  AliPWG4HighPtSpectra *taskSpectra70cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,7,0,triggerMask,"CENT_10_NOITS",bSelHijingParticles,usePythiaxsec); // Complementary tracks. Subtype: no ITS refit
  AliPWG4HighPtSpectra *taskSpectra71cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,7,1,triggerMask,"CENT_10_NOSPD",bSelHijingParticles,usePythiaxsec); // Complementary tracks. Subtype: no SPD requirement

  if(beamType=="PbPb" || beamType=="pPb") { //also vary the centrality
    for(int cent=0; cent<4; cent++) {
      AliPWG4HighPtSpectra *taskSpectra00 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,0,0,triggerMask,Form("CENT_%d_RAA"  ,cent),bSelHijingParticles,usePythiaxsec);
      AliPWG4HighPtSpectra *taskSpectra01 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,0,1,triggerMask,Form("CENT_%d_RESTR",cent),bSelHijingParticles,usePythiaxsec);
      AliPWG4HighPtSpectra *taskSpectra70 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,7,0,triggerMask,Form("CENT_%d_NOITS",cent),bSelHijingParticles,usePythiaxsec);
      AliPWG4HighPtSpectra *taskSpectra71 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,7,1,triggerMask,Form("CENT_%d_NOSPD",cent),bSelHijingParticles,usePythiaxsec);
    }
  }
}

void AddTaskHybridTrackEfficiencyESD2011(char *prodType = "LHC10h", TString beamType = "PbPb", UInt_t triggerMask = AliVEvent::kMB, Bool_t bSelHijingParticles = kFALSE, Bool_t usePythiaxsec = kFALSE)
{
  AliPWG4HighPtSpectra *taskSpectra00cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,0,triggerMask,"CENT_10_RAA"  ,bSelHijingParticles,usePythiaxsec); // RAA track cuts
  AliPWG4HighPtSpectra *taskSpectra01cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,5,triggerMask,"CENT_10_RESTR",bSelHijingParticles,usePythiaxsec); // High quality tracks
  AliPWG4HighPtSpectra *taskSpectra71cent10 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,7,5,triggerMask,"CENT_10_NOSPD",bSelHijingParticles,usePythiaxsec); // Complementary tracks. Subtype: no SPD requirement

  if(beamType=="PbPb" || beamType=="pPb") { //also vary the centrality
    for(int cent=0; cent<4; cent++) {
      AliPWG4HighPtSpectra *taskSpectra00 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,0,0,triggerMask,Form("CENT_%d_RAA"  ,cent),bSelHijingParticles,usePythiaxsec);
      AliPWG4HighPtSpectra *taskSpectra01 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,0,5,triggerMask,Form("CENT_%d_RESTR",cent),bSelHijingParticles,usePythiaxsec);
      AliPWG4HighPtSpectra *taskSpectra71 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,cent,7,5,triggerMask,Form("CENT_%d_NOSPD",cent),bSelHijingParticles,usePythiaxsec);
    }
  }
}

void AddTaskHybridTrackEfficiencyQA_AOD_train(char *prodType = "LHC11h", TString beamType = "PbPb", UInt_t triggerMask = AliVEvent::kMB, Bool_t bSelHijingParticles = kFALSE, Bool_t usePythiaxsec = kFALSE)
{
  Int_t filterMask1; //standard global tracks
  Int_t filterMask2; //complementary tracks
  Int_t filterMask; //the sum: hybrid tracks

  TString strRunPeriod = TString(prodType);
  strRunPeriod.ToLower();

  if (strRunPeriod == "lhc10h" || strRunPeriod == "lhc11h" ||
      strRunPeriod == "lhc12a" || strRunPeriod == "lhc12b" || strRunPeriod == "lhc12c" || strRunPeriod == "lhc12d" ||
      strRunPeriod == "lhc12e" || strRunPeriod == "lhc12f" || strRunPeriod == "lhc12g" || strRunPeriod == "lhc12g" ||
      strRunPeriod == "lhc12h" || strRunPeriod == "lhc12i" ||
      strRunPeriod == "lhc13b" || strRunPeriod == "lhc13c" || strRunPeriod == "lhc13d" || strRunPeriod == "lhc13e" ||
      strRunPeriod == "lhc13f" || strRunPeriod == "lhc13g" ||
      strRunPeriod == "lhc12a15e" || strRunPeriod == "lhc13b4" || strRunPeriod == "lhc13b4_fix" ||
      strRunPeriod == "lhc13b4_plus" || strRunPeriod == "lhc12a15f" || strRunPeriod.Contains("lhc12a17") || strRunPeriod.Contains("lhc14a1")) {
    filterMask  = 768;
    filterMask1 = 256;
    filterMask2 = 512;
  }
  else if (strRunPeriod == "lhc11a" || strRunPeriod == "lhc10hold" || strRunPeriod == "lhc12a15a" || strRunPeriod.Contains("lhc11a2")) {
    filterMask  = 272;
    filterMask1 = 16;
    filterMask2 = 256;
  }
  else {
    ::Error("AddTaskHybridTrackEfficiency","Period string not of predefined type. Add it to the list in this macro.");
    return NULL;
  }

  AliPWG4HighPtSpectra   *taskSpectraSUM   = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,1,triggerMask,"SUM"  ,bSelHijingParticles,usePythiaxsec,filterMask ); //Sum: the hybrid tracks.
  AliPWG4HighPtSpectra   *taskSpectraRESTR = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,0,5,triggerMask,"RESTR",bSelHijingParticles,usePythiaxsec,filterMask1); //With SPD and ITS refit.
  AliPWG4HighPtSpectra   *taskSpectraNOSPD = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,10,7,5,triggerMask,"NOSPD",bSelHijingParticles,usePythiaxsec,filterMask2); //Only ITS refit, not SPD.
  if(beamType=="PbPb" || beamType=="pPb") { //also vary the centrality
    AliPWG4HighPtSpectra *taskSpectraCent0 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,0 ,0,1,triggerMask,"CENT0",bSelHijingParticles,usePythiaxsec,filterMask );
    AliPWG4HighPtSpectra *taskSpectraCent1 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,1 ,0,1,triggerMask,"CENT1",bSelHijingParticles,usePythiaxsec,filterMask );
    AliPWG4HighPtSpectra *taskSpectraCent2 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,2 ,0,1,triggerMask,"CENT2",bSelHijingParticles,usePythiaxsec,filterMask );
    AliPWG4HighPtSpectra *taskSpectraCent3 = ConfigureTaskPWG4HighPtSpectra(prodType,beamType,3 ,0,1,triggerMask,"CENT3",bSelHijingParticles,usePythiaxsec,filterMask );
  }
}

AliPWG4HighPtSpectra* ConfigureTaskPWG4HighPtSpectra(char *prodType = "LHC10e14", TString beamType = "PbPb", Int_t centClass = 0, 
						     Int_t trackType = 0, Int_t cuts = 0, UInt_t triggerMask = AliVEvent::kMB,
						     TString taskName, Bool_t bSelHijingParticles = kFALSE,
                                                     Bool_t usePythiaxsec = kTRUE, Int_t filterMask = 0)
{

  /*
    trackType: 0 = global
               1 = TPC stand alone
               2 = TPC stand alone constrained to SPD vertex
               4 = TPC stand alone constrained to SPD vertex with QA track selection on global tracks
               5 = Hybrid tracks: constrained TPConly for which no tight ITS is available
               6 = Hybrid tracks: constrained loose global for which no tight ITS is available
    cuts:      0 (global) = standard ITSTPC2010 a la RAA analysis
               1 (global) = ITSrefit, no SPD requirements -> standard for jet analysis
               2 (global) = ITSrefit + no hits in SPD
               3 (global) = standard ITS tight cuts with nCrossed rows cut for hybrid tracks
               0 (TPC)    = standard TPC + NClusters>70
               1 (TPC)    = standard TPC + NClusters>0 --> to study new TPC QA recommendations
               0 (hybrid 5) = constrained TPConly for which no tight ITS is available
               0 (hybrid 6) = constrained loose global for which no tight ITS is available
   */

  // Creates HighPtSpectra analysis task and adds it to the analysis manager.
  
  //Load common track cut class
  gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/CreateTrackCutsPWGJE.C");

  // A. Get the pointer to the existing analysis manager via the static access method.
  //==============================================================================
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskHybridTrackEfficiency", "No analysis manager to connect to.");
    return NULL;
  }  
  TString dataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"

  // B. Check the analysis type using the event handlers connected to the analysis
  //    manager. The availability of MC handler can also be checked here.
  //==============================================================================
  if (!mgr->GetInputEventHandler()) {
    ::Error("AddTaskHybridTrackEfficiency", "This task requires an input event handler");
    return NULL;
  }  

  // C. Create the task, add it to manager.
  //===========================================================================
 //CONTAINER DEFINITION
  Info("AliPWG4HighPtSpectra","SETUP CONTAINER");
  //the sensitive variables, their indices
  UInt_t ipt   = 0;
  UInt_t iphi  = 1;
  UInt_t ieta  = 2;
  UInt_t incls = 3;

  //Setting up the container grid... 
  UInt_t nstep = 4; //Steps/Modes for containers
  Int_t kStepReconstructed          = 0;
  Int_t kStepSecondaries            = 1;
  Int_t kStepReconstructedMC        = 2;
  Int_t kStepMCAcceptance           = 3;

  //redefine pt ranges in case of Jet-Jet production
  Float_t ptBinEdges[4][4];
  Float_t ptmin =  0.0 ;
  Float_t ptmax =  100.0 ;

  ptBinEdges[0][0] = 2.;
  ptBinEdges[0][1] = 0.2;
  ptBinEdges[1][0] = 6.;
  ptBinEdges[1][1] = 0.5;
  ptBinEdges[2][0] = 20.;
  ptBinEdges[2][1] = 2.;
  ptBinEdges[3][0] = 100.;
  ptBinEdges[3][1] = 5.;
  
  const Int_t nvar   = 4; //number of variables on the grid: pt:phi:eta:NClsIter1

  const Int_t nbin11 = round((ptBinEdges[0][0]-ptmin)/ptBinEdges[0][1]);
  const Int_t nbin12 = round((ptBinEdges[1][0]-ptBinEdges[0][0])/ptBinEdges[1][1])+nbin11;
  const Int_t nbin13 = round((ptBinEdges[2][0]-ptBinEdges[1][0])/ptBinEdges[2][1])+nbin12;
  const Int_t nbin14 = round((ptBinEdges[3][0]-ptBinEdges[2][0])/ptBinEdges[3][1])+nbin13;

  const Int_t nbin1  = nbin14; //bins in pt 
  const Int_t nbin2  =  36;    //bins in phi
  const Int_t nbin3  =  10;     //bins in eta
  const Int_t nbin4  =  1;//6;     //bins in NClsIter1: 0 70 80 90 100 120


  //arrays for the number of bins in each dimension
  Int_t iBin[nvar];
  iBin[0]=nbin1;
  iBin[1]=nbin2;
  iBin[2]=nbin3;
  iBin[3]=nbin4;
   
  //arrays for lower bounds :
  Double_t *binLim1=new Double_t[nbin1+1];
  Double_t *binLim2=new Double_t[nbin2+1];
  Double_t *binLim3=new Double_t[nbin3+1];
  Double_t *binLim4=new Double_t[nbin4+1];
  
  //values for bin lower bounds 
  for(Int_t i=0; i<=nbin1; i++) {
    if(i<=nbin11) binLim1[i]=(Double_t)ptmin + (ptBinEdges[0][0]-ptmin)/nbin11*(Double_t)i ;  
    if(i<=nbin12 && i>nbin11) binLim1[i]=(Double_t)ptBinEdges[0][0] + (ptBinEdges[1][0]-ptBinEdges[0][0])/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ; 
    if(i<=nbin13 && i>nbin12) binLim1[i]=(Double_t)ptBinEdges[1][0] + (ptBinEdges[2][0]-ptBinEdges[1][0])/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ; 
    if(i<=nbin14 && i>nbin13) binLim1[i]=(Double_t)ptBinEdges[2][0] + (ptBinEdges[3][0]-ptBinEdges[2][0])/(nbin14-nbin13)*((Double_t)i-(Double_t)nbin13) ; 
  }
  for(Int_t i=0; i<=nbin2; i++) binLim2[i]=(Double_t)phimin + (phimax-phimin)/nbin2*(Double_t)i ;
  for(Int_t i=0; i<=nbin3; i++) binLim3[i]=(Double_t)etamin + (etamax-etamin)/nbin3*(Double_t)i ;  
  binLim4[0] = 70.;//0.;
  binLim4[1] = 160.;//70.;
  // binLim4[2] = 80.;
  // binLim4[3] = 90.;
  // binLim4[4] = 100.;
  // binLim4[5] = 120.;
  // binLim4[6] = 160.;


  AliCFContainer* containerPos = new AliCFContainer("containerPos","container for positive tracks",nstep,nvar,iBin);
  //setting the bin limits
  containerPos -> SetBinLimits(ipt,binLim1);
  containerPos -> SetBinLimits(iphi,binLim2);
  containerPos -> SetBinLimits(ieta,binLim3);
  containerPos -> SetBinLimits(incls,binLim4);

  AliCFContainer* containerNeg = new AliCFContainer("containerNeg","container for negative tracks",nstep,nvar,iBin);
  //setting the bin limits
  containerNeg -> SetBinLimits(ipt,binLim1);
  containerNeg -> SetBinLimits(iphi,binLim2);
  containerNeg -> SetBinLimits(ieta,binLim3);
  containerNeg -> SetBinLimits(incls,binLim4);
  
  //CREATE THE  CUTS -----------------------------------------------
  //Use AliESDtrackCuts, only for ESD analysis
  AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts","Standard Cuts");
  AliESDtrackCuts *trackCutsReject = 0x0;

  if(dataType=="ESD") {
    //Standard Cuts
    //Set track cuts for global tracks
    if(trackType==0 && cuts==0) {
      // tight global tracks - RAA analysis
      trackCuts = CreateTrackCutsPWGJE(1000);
    }
    if(trackType==0 && cuts==1) {
      //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis
      trackCuts = CreateTrackCutsPWGJE(10001006);
    }
    if(trackType==0 && cuts==5) {
      //Cuts global tracks with ITSrefit requirement and SPDrequirement for jet analysis + NCrossedRowsCut>120 recommended in 2011
      trackCuts = CreateTrackCutsPWGJE(10001008);
    }
    
    if(trackType==0 && cuts==2) {
      //Cuts global tracks with ITSrefit requirement but without SPD
      if (!strcmp(prodType,"LHC12a15e"))
        trackCuts = CreateTrackCutsPWGJE(10011008);
      else
        trackCuts = CreateTrackCutsPWGJE(10011006);
    }
    if(trackType==7 && cuts==0) {
      // no requirements on SPD and ITSrefit failed
      trackCuts = CreateTrackCutsPWGJE(10041006);   //no ITSrefit requirement
      trackCutsReject = CreateTrackCutsPWGJE(1006); //ITSrefit requirement
      trackCutsReject->SetEtaRange(etamin,etamax);
      trackCutsReject->SetPtRange(0.15, 1e10);
    }
    if(trackType==7 && cuts==4) {
      // tight global tracks +  NCrossedRowsCut>120 recommended in 2011
      trackCuts = CreateTrackCutsPWGJE(10041008);
      trackCutsReject = CreateTrackCutsPWGJE(1008);
      trackCutsReject->SetEtaRange(-0.9,0.9);
      trackCutsReject->SetPtRange(0.15, 1e10);
    }
    if(trackType==7 && cuts==1) {
      //Cuts global tracks with ITSrefit requirement but without SPD
      trackCuts = CreateTrackCutsPWGJE(10011006);
    }
    if(trackType==7 && cuts==5) {
      // tight global tracks  + NCrossedRowsCut>120 recommended in 2011
      trackCuts = CreateTrackCutsPWGJE(10011008);
    }
  
    if(trackType==7 && cuts==2) {
      // no requirements on SPD and ITSrefit failed
      trackCuts = CreateTrackCutsPWGJE(10041006);       //no ITSrefit requirement filter 256
      trackCutsReject = CreateTrackCutsPWGJE(10001006); //ITSrefit requirement filter 16
      trackCutsReject->SetEtaRange(etamin,etamax);
      trackCutsReject->SetPtRange(0.15, 1e10);
    }
    if(trackType==7 && cuts==6) {
      // no requirements on SPD and ITSrefit failed
      trackCuts = CreateTrackCutsPWGJE(10041008);       //no ITSrefit requirement filter 256
      trackCutsReject = CreateTrackCutsPWGJE(10001008); //ITSrefit requirement filter 16
      trackCutsReject->SetEtaRange(-0.9,0.9);
      trackCutsReject->SetPtRange(0.15, 1e10);
    }
  
  
  
    if(trackType==1 && cuts==0) {
      //Set track cuts for TPConly tracks
      trackCuts = CreateTrackCutsPWGJE(2001);
    }
    if(trackType==2 && cuts==0) {
       //	      Set track cuts for TPConly constrained tracks
      trackCuts = CreateTrackCutsPWGJE(2001);
    }
    trackCuts->SetEtaRange(etamin,etamax);
    trackCuts->SetPtRange(0.15, 1e10);
  }

  // Gen-Level kinematic cuts
  AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
  mcKineCuts->SetPtRange(0.15,1e10);
  mcKineCuts->SetEtaRange(etamin,etamax);//-0.5,0.5);
  mcKineCuts->SetRequireIsCharged(kTRUE);

  //Acceptance Cuts
  //AliCFAcceptanceCuts *mcAccCuts = new AliCFAcceptanceCuts("mcAccCuts","MC acceptance cuts");
  // mcAccCuts->SetMinNHitITS(mintrackrefsITS);
  //mcAccCuts->SetMinNHitTPC(mintrackrefsTPC);

  TObjArray* recMCList = new TObjArray(0);
  TObjArray* secList = new TObjArray(0) ;

  printf("CREATE MC KINE CUTS\n");
  TObjArray* recList = new TObjArray(0);
  TObjArray* mcList = new TObjArray(0) ;
  mcList->AddLast(mcKineCuts);
  recList->AddLast(mcKineCuts);
  //mcList->AddLast(mcAccCuts);

  //CREATE THE INTERFACE TO CORRECTION FRAMEWORK USED IN THE TASK
  printf("CREATE INTERFACE AND CUTS\n");
  AliCFManager* manPos = new AliCFManager("manPos","Manager for Positive tracks") ;
  manPos->SetParticleContainer(containerPos);
  manPos->SetParticleCutsList(kStepReconstructed,recList);
  manPos->SetParticleCutsList(kStepSecondaries,secList);
  manPos->SetParticleCutsList(kStepReconstructedMC,recMCList);
  manPos->SetParticleCutsList(kStepMCAcceptance,mcList);

  AliCFManager* manNeg = new AliCFManager("manNeg","Manager for Negative tracks") ;
  manNeg->SetParticleContainer(containerNeg);
  manNeg->SetParticleCutsList(kStepReconstructed,recList);
  manNeg->SetParticleCutsList(kStepSecondaries,secList);
  manNeg->SetParticleCutsList(kStepReconstructedMC,recMCList);
  manNeg->SetParticleCutsList(kStepMCAcceptance,mcList);

  TString trigName = "";
  if (triggerMask == AliVEvent::kAnyINT)
    trigName += "kAnyINT";
  else if (triggerMask == AliVEvent::kAny)
    trigName += "kAny";
  else if(triggerMask == AliVEvent::kINT7)
    trigName += "kINT7";
  else if(triggerMask == AliVEvent::kMB)
    trigName += "kMB";
  else if(triggerMask == AliVEvent::kEMC7)
    trigName += "kEMC7";
  else if(triggerMask == AliVEvent::kEMCEJE)
    trigName += "kEMCEJE";
  else if(triggerMask == AliVEvent::kEMCEGA)
    trigName += "kEMCEGA";


  AliPWG4HighPtSpectra *taskPWG4HighPtSpectra = new AliPWG4HighPtSpectra(Form("AliPWG4HighPtSpectra%s_%s",taskName.Data(),trigName.Data()));
  taskPWG4HighPtSpectra->SetTrackType(trackType);
  if(dataType=="AOD")
    taskPWG4HighPtSpectra->SetFilterMask(filterMask);
  else {
    taskPWG4HighPtSpectra->SetCuts(trackCuts);
    taskPWG4HighPtSpectra->SetCutsReject(trackCutsReject);
  }
  taskPWG4HighPtSpectra->SetCFManagerPos(manPos); //here is set the CF manager +
  taskPWG4HighPtSpectra->SetCFManagerNeg(manNeg); //here is set the CF manager -
  taskPWG4HighPtSpectra->SetTriggerMask(triggerMask);
  taskPWG4HighPtSpectra->SelectHIJINGOnly(bSelHijingParticles);
  taskPWG4HighPtSpectra->SetReadAODData(dataType=="AOD"? kTRUE : kFALSE);
  if(!usePythiaxsec)
    taskPWG4HighPtSpectra->SetNoPythiaInfo();

  if(beamType=="PbPb" || beamType=="pPb") {
    taskPWG4HighPtSpectra->SetIsPbPb(kTRUE);
    taskPWG4HighPtSpectra->SetCentralityClass(centClass);
  }
  //  taskPWG4HighPtSpectra->SetSigmaConstrainedMax(5.);


  // E. Create ONLY the output containers for the data produced by the task.
  // Get and connect other common input/output containers via the manager as below
  //==============================================================================

  //------ output containers ------
  TString outputfile = AliAnalysisManager::GetCommonFileName();
  outputfile += Form(":PWG4_HighPtSpectra%s_%s",taskName.Data(),trigName.Data());

  AliAnalysisDataContainer *coutput0 = 0x0;
  AliAnalysisDataContainer *coutput1 = 0x0;
  AliAnalysisDataContainer *coutput2 = 0x0;
  AliAnalysisDataContainer *cout_cuts0 = 0x0;

  coutput0 = mgr->CreateContainer(Form("chist0HighPtSpectra%s_%s",taskName.Data(),trigName.Data()), TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
  coutput1 = mgr->CreateContainer(Form("ccontainer0HighPtSpectra%s_%s",taskName.Data(),trigName.Data()), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
  coutput2 = mgr->CreateContainer(Form("ccontainer1HighPtSpectra%s_%s",taskName.Data(),trigName.Data()), AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
  cout_cuts0 = mgr->CreateContainer(Form("qa_SpectraTrackCuts%s_%s",taskName.Data(),trigName.Data()), AliESDtrackCuts::Class(), AliAnalysisManager::kParamContainer,outputfile);
  
  mgr->AddTask(taskPWG4HighPtSpectra);

  mgr->ConnectInput(taskPWG4HighPtSpectra,0,mgr->GetCommonInputContainer());
  mgr->ConnectOutput(taskPWG4HighPtSpectra,0,coutput0);
  mgr->ConnectOutput(taskPWG4HighPtSpectra,1,coutput1);
  mgr->ConnectOutput(taskPWG4HighPtSpectra,2,coutput2);
  mgr->ConnectOutput(taskPWG4HighPtSpectra,3,cout_cuts0);

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