ROOT logo
class AliAnalysisGrid;
class AliAnalysisAlien;

void RunAnalysisAODVertexingHF()
{
  //
  // Test macro for AliAnalysisTaskSE's for heavy-flavour candidates
  // It has the structure of a Analysis Train:
  // - in this macro, change things related to running mode
  //   and input preparation 
  // - add your task using a AddTaskXXX macro 
  //
  // A.Dainese, andrea.dainese@lnl.infn.it
  // "grid" mode added by R.Bala, bala@to.infn.it
  //


  gSystem->SetIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/STEER/ESD -I$ALICE_ROOT/STEER/AOD -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS  -I$ALICE_ROOT/OADB -I$ALICE_ROOT/PWGHF -I$ALICE_ROOT/PWGHF/base -I$ALICE_ROOT/PWGHF/vertexingHF -I$ALICE_ROOT/PWG/FLOW/Base -I$ALICE_ROOT/PWG/FLOW/Tasks -I$ALICE_ROOT/PWG -g"); 
  //
  TString trainName = "D2H";
  TString analysisMode = "grid"; // "local", "grid", or "proof"
  TString inputMode    = "list"; // "list", "xml", or "dataset"
  Long64_t nentries=123567890,firstentry=0;
  Bool_t useParFiles=kFALSE;
  Bool_t useAlienPlugin=kTRUE;
  TString pluginmode="full";
  TString testfileslistWithPlugin="";
  Bool_t saveProofToAlien=kFALSE;
  TString proofOutdir = "";
  TString loadMacroPath="$ALICE_ROOT/PWGHF/vertexingHF/macros/";
  //TString loadMacroPath="./"; // this is normally needed for CAF
  //

  if(analysisMode=="grid") {
    // Connect to AliEn
    TGrid::Connect("alien://");
  } else if(analysisMode=="proof") {
    // Connect to the PROOF cluster
    if(inputMode!="dataset") {printf("Input mode must be dataset, for proof analysis\n"); return;}
    gEnv->SetValue("XSec.GSI.DelegProxy","2");
    TProof::Open("alicecaf");
    //TProof::Reset("alicecaf");
    if(saveProofToAlien) {
      TGrid::Connect("alien://");
      if(gGrid) {
	TString homedir = gGrid->GetHomeDirectory();
	TString workdir = homedir + trainName;
	if(!gGrid->Cd(workdir)) {
	  gGrid->Cd(homedir);
	  if(gGrid->Mkdir(workdir)) {
	    gGrid->Cd(trainName);
	    ::Info("VertexingTrain::Connect()", "Directory %s created", gGrid->Pwd());
	  }
	}	   
	gGrid->Mkdir("proof_output");
	gGrid->Cd("proof_output");
	proofOutdir = Form("alien://%s", gGrid->Pwd());
      } 
    }
  }


  // AliRoot libraries
  if(analysisMode=="local" || analysisMode=="grid") {
    TString loadLibraries="LoadLibraries.C"; loadLibraries.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(loadLibraries.Data());
    LoadLibraries(useParFiles);
    gSystem->Load("libGui.so");
    gSystem->Load("libRAWDatabase.so");
    gSystem->Load("libCDB.so");
    gSystem->Load("libSTEER.so");
    gSystem->Load("libTRDbase.so");
    gSystem->Load("libPWGTRD.so");
  } else if (analysisMode=="proof") {
    gSystem->Load("libTree.so");
    gSystem->Load("libGeom.so");
    gSystem->Load("libPhysics.so");
    gSystem->Load("libVMC.so");    
    gSystem->Load("libMinuit.so");    
    gSystem->Load("libGui.so");
    gSystem->Load("libRAWDatabase.so");
    gSystem->Load("libCDB.so");
    gSystem->Load("libSTEER.so");
    gSystem->Load("libTRDbase.so");
    gSystem->Load("libPWGTRD.so");
    // Enable the needed packages
    //gProof->ClearPackages();
    TString parDir="/afs/cern.ch/user/d/dainesea/code/";
    TString parFile;
    if(!useParFiles) {
      gProof->UploadPackage("AF-v4-17");
      gProof->EnablePackage("AF-v4-17");
      // --- Enable the PWGHFvertexingHF Package
      parFile="PWGHFvertexingHF.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("PWGHFvertexingHF");
    } else {
      // --- Enable the STEERBase Package
      parFile="STEERBase.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("STEERBase");
      // --- Enable the ESD Package
      parFile="ESD.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("ESD");
      // --- Enable the AOD Package
      parFile="AOD.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("AOD");
      // --- Enable the ANALYSIS Package
      parFile="ANALYSIS.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("ANALYSIS");
      // --- Enable the ANALYSISalice Package
      parFile="ANALYSISalice.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("ANALYSISalice");
      // --- Enable the CORRFW Package
      parFile="CORRFW.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("CORRFW");
      // --- Enable the PWGHFbase Package
      parFile="PWGHFbase.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("PWGHFbase");
      // --- Enable the PWGHFvertexingHF Package
      parFile="PWGHFvertexingHF.par"; parFile.Prepend(parDir.Data());
      gProof->UploadPackage(parFile.Data());
      gProof->EnablePackage("PWGHFvertexingHF");
    }
    gProof->ShowEnabledPackages(); // show a list of enabled packages
  }


  // Create Alien plugin, if requested
  if(useAlienPlugin) {  
    //    if(analysisMode!="grid") {printf("Analysis mode must be grid, to use alien plugin\n"); return;}
    AliAnalysisGrid *alienHandler = CreateAlienHandler(pluginmode,useParFiles,testfileslistWithPlugin);  
    if(!alienHandler) return;
  }


  //-------------------------------------------------------------------
  // Prepare input
  TChain *chainAOD = 0;
  TString dataset; // for proof

  if(!useAlienPlugin) {
    TString makeAODInputChain="../MakeAODInputChain.C"; makeAODInputChain.Prepend(loadMacroPath.Data());
    if(inputMode=="list") {
      // Local files
      gROOT->LoadMacro(makeAODInputChain.Data());
      chainAOD = MakeAODInputChain();// with this it reads ./AliAOD.root and ./AliAOD.VertexingHF.root
      //chainAOD = MakeAODInputChain("alien:///alice/cern.ch/user/r/rbala/newtrain/out_lhc08x/180100/",1,1);
      printf("ENTRIES %d\n",chainAOD->GetEntries());
    } else if(inputMode=="xml") {
      // xml
      gROOT->LoadMacro(makeAODInputChain.Data());
      chainAOD = MakeAODInputChain("collection_aod.xml","collection_aodHF.xml");
    } else if(inputMode=="dataset") {
      // CAF dataset
      //gProof->ShowDataSets();
      dataset="/ITS/dainesea/AODVertexingHF_LHC08x_180100";
    }
  }

  // Create the analysis manager
  AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager","My Manager");
  mgr->SetDebugLevel(10);
  // Connect plug-in to the analysis manager
  if(useAlienPlugin) mgr->SetGridHandler(alienHandler);

  // Input
  AliAODInputHandler *inputHandler = new AliAODInputHandler("handler","handler for D2H");
  if(analysisMode=="proof" ) {
    inputHandler->AddFriend("./AliAOD.VertexingHF.root");
    //inputHandler->AddFriend("deltas/AliAOD.VertexingHF.root");
    if(saveProofToAlien) mgr->SetSpecialOutputLocation(proofOutdir);
  }
  mgr->SetInputEventHandler(inputHandler);
  //-------------------------------------------------------------------

  
  //-------------------------------------------------------------------
  // Analysis tasks (wagons of the train)   
  //
  // First add the task for the PID response setting
  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
  AliAnalysisTaskSE *setupTask = AddTaskPIDResponse(kFALSE,kTRUE);

  gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
  AliAnalysisTaskPIDqa *pidQA = AddTaskPIDqa();


  TString taskName;
  
  ////// ADD THE FULL D2H TRAIN
  /*taskName="../AddD2HTrain.C"; taskName.Prepend(loadMacroPath.Data());
  gROOT->LoadMacro(taskName.Data());
  Bool_t readMC=kFALSE;
  AddD2HTrain(readMC);//,1,0,0,0,0,0,0,0,0,0,0);*/
  
  ////// OR ADD INDIVIDUAL TASKS
  
  taskName="AddTaskHFQA.C"; taskName.Prepend(loadMacroPath.Data());
  gROOT->LoadMacro(taskName.Data());
  AliAnalysisTaskSEHFQA *qaTask = AddTaskHFQA(0,"",kFALSE, kTRUE, 0 , "QApp",kTRUE,kTRUE,kFALSE, kTRUE, kFALSE,kTRUE);

  /*  taskName="AddTaskCompareHF.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSECompareHF *cmpTask = AddTaskCompareHF();
    */  
    taskName="AddTaskD0Mass.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSED0Mass *d0massTask = AddTaskD0Mass();
    AliAnalysisTaskSED0Mass *d0massLikeSignTask = AddTaskD0Mass(1); 
    /*
    taskName="AddTaskDplus.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEDplus *dplusTask = AddTaskDplus();

    taskName="AddTaskDs.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEDs *dsTask = AddTaskDs();
    
    //taskName="AddTaskSelectHF.C"; taskName.Prepend(loadMacroPath.Data());
    //gROOT->LoadMacro(taskName.Data());
    //AliAnalysisTaskSESelectHF *seleTask = AddTaskSelectHF();
    
    taskName="AddTaskBkgLikeSignD0.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliAnalysisTaskSEBkgLikeSignD0 *lsD0Task = AddTaskBkgLikeSignD0();
    
    taskName="AddTaskCFMultiVarMultiStep.C"; taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    AliCFHeavyFlavourTaskMultiVarMultiStep *cfmvmsTask = AddTaskCFMultiVarMultiStep();
    

    taskName="AddTaskSECharmFraction.C"; 
    taskName.Prepend(loadMacroPath.Data());
    gROOT->LoadMacro(taskName.Data());
    Int_t switchMC[5]={0,0,0,0,0};
    Int_t ppPbPb=1;// 0 for pp, 1 for PbPb, used to siwtch on/off the removal of daughters from the primary vertex
    AliAnalysisTaskSECharmFraction *cFractTask = AddTaskSECharmFraction("standard",switchMC,readMC,kTRUE,kFALSE,"D0toKpiCharmFractCuts.root","c",ppPbPb);
    // arguments: filename,switchMC,readmc,usepid,likesign,cutfilename,containerprefix

    
    // attach a private task (not committed)
    // (the files MyTask.h MyTask.cxx AddMyTask.C have to be declared in plugin
    // configuration, see below)
    
    if(analysisMode.Data()=="proof") {
    gProof->LoadMacro("MyTask.cxx++g");
    } else {
    gROOT->LoadMacro("MyTask.cxx++g");
    }
    gROOT->LoadMacro("AddMyTask.C");
    MyTask *myTask = AddMyTask();
    
    
    if(analysisMode.Data()=="proof") {
    gProof->LoadMacro("AliDStarJets.cxx++g");
    } else {
    gROOT->LoadMacro("AliDStarJets.cxx++g");
    }
    gROOT->LoadMacro("AddTaskDStarJets.C");
    AliDStarJets *myTask = AddTaskDStarJets();
  */
  //-------------------------------------------------------------------
  
  //
  // Run the analysis
  //    
  if(chainAOD) printf("CHAIN HAS %d ENTRIES\n",(Int_t)chainAOD->GetEntries());
  
  if(!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  if(analysisMode=="grid" && !useAlienPlugin) analysisMode="local";
  if(analysisMode!="proof") {
    mgr->StartAnalysis(analysisMode.Data(),chainAOD,nentries,firstentry);
  } else {
    // proof
    mgr->StartAnalysis(analysisMode.Data(),dataset.Data(),nentries,firstentry);
  }
  
  return;
}
//_____________________________________________________________________________
//
AliAnalysisGrid* CreateAlienHandler(TString pluginmode="test",Bool_t useParFiles=kFALSE, TString testfileslistWithPlugin="")
{
  // Check if user has a valid token, otherwise make one. This has limitations.
  // One can always follow the standard procedure of calling alien-token-init then
  //   source /tmp/gclient_env_$UID in the current shell.
   AliAnalysisAlien *plugin = new AliAnalysisAlien();
   // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
   plugin->SetRunMode(pluginmode.Data());
   plugin->SetUser();
   // Set versions of used packages
   plugin->SetAPIVersion("V1.1x");
   plugin->SetROOTVersion();
   plugin->SetAliROOTVersion();
   plugin->SetNtestFiles(1);
   gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/AddGoodRuns.C");

   // Declare input data to be processed.
   //************************************************
   // Set data file list to test on local mode
   //************************************************  
   plugin->SetFileForTestMode(testfileslistWithPlugin.Data());

   //************************************************
   // Set data search pattern for DATA
   //************************************************  
   //Method 1: To create automatically xml through plugin  
   plugin->SetGridDataDir("/alice/data/2010/LHC10d"); // specify LHC period
   plugin->SetDataPattern("pass2/AOD018/*AliAOD.root"); // specify reco pass and AOD set
   plugin->SetFriendChainName("./AliAOD.VertexingHF.root");
   // OR plugin->SetFriendChainName("deltas/AliAOD.VertexingHF.root");
   // Adds only the good runs from the Monalisa Run Condition Table
   // More than one period can be added but the period name has to be removed from GridDataDir (to be tested)
   Int_t totruns=0;
   //totruns += AddGoodRuns(plugin,"LHC10b"); // specify LHC period
   //totruns += AddGoodRuns(plugin,"LHC10c"); // specify LHC period
   totruns += AddGoodRuns(plugin,"LHC10d"); // specify LHC period
   plugin->SetNrunsPerMaster(totruns);

   // Method 2: Declare existing data files (e.g xml collections)

   //plugin->AddDataFile("/alice/cern.ch/user/r/rbala/000168068_000170593.xml");
   //  plugin->SetDataPattern("*AliAOD.root");
   //  plugin->SetFriendChainName("./AliAOD.VertexingHF.root"); 

   //************************************************
   // Set data search pattern for MONTECARLO
   //************************************************
   /* 
   plugin->SetGridDataDir("/alice/sim/LHC10d3"); // specify MC sample
   plugin->SetDataPattern("AOD005/*AliAOD.root"); // specify AOD set
   plugin->SetFriendChainName("./AliAOD.VertexingHF.root");
   // OR plugin->SetFriendChainName("deltas/AliAOD.VertexingHF.root");
   // Adds only the good runs from the Monalisa Run Condition Table 
   // More than one period can be added!
   Int_t totruns=0;
   totruns += AddGoodRuns(plugin,"LHC10b","LHC10d3"); // specify LHC period for anchor runs; and the name of the MC production
   //totruns += AddGoodRuns(plugin,"LHC10c","LHC10f7"); // specify LHC period for anchor runs;  and the name of the MC production
   //totruns += AddGoodRuns(plugin,"LHC10d","LHC10f7"); // specify LHC period for anchor runs;  and the name of the MC production
   plugin->SetNrunsPerMaster(totruns);
   */
   //
   // Define alien work directory where all files will be copied. Relative to alien $HOME.
   plugin->SetGridWorkingDir("myHFanalysis");
   // Name of executable
   plugin->SetExecutable("myHFanalysis.sh");
   // Declare alien output directory. Relative to working directory.
   plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
   // Declare the analysis source files names separated by blancs. To be compiled runtime
   // using ACLiC on the worker nodes.
   //plugin->SetAnalysisSource("AliDStarJets.cxx");
   // Declare all libraries (other than the default ones for the framework. These will be
   // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
   plugin->SetAdditionalLibs("libPWGflowBase.so libPWGflowTasks.so libPWGHFbase.so libPWGHFvertexingHF.so libGui.so libRAWDatabase.so libCDB.so libSTEER.so libTRDbase.so libPWGTRD.so");
   // use par files
   if(useParFiles) {
     plugin->EnablePackage("STEERBase.par");
     plugin->EnablePackage("ESD.par");
     plugin->EnablePackage("AOD.par");
     plugin->EnablePackage("ANALYSIS.par");
     plugin->EnablePackage("OADB.par");
     plugin->EnablePackage("ANALYSISalice.par");
     plugin->EnablePackage("CORRFW.par");
     plugin->EnablePackage("PWGHFbase.par");
     plugin->EnablePackage("PWGHFvertexingHF.par");
   }
   plugin->AddIncludePath("-I. -I$ROOTSYS/include -I$ALICE_ROOT -I$ALICE_ROOT/include -I$ALICE_ROOT/ITS -I$ALICE_ROOT/TPC -I$ALICE_ROOT/CONTAINERS -I$ALICE_ROOT/STEER/STEER -I$ALICE_ROOT/STEER/STEERBase -I$ALICE_ROOT/STEER/ESD -I$ALICE_ROOT/STEER/AOD -I$ALICE_ROOT/TRD -I$ALICE_ROOT/macros -I$ALICE_ROOT/ANALYSIS  -I$ALICE_ROOT/OADB -I$ALICE_ROOT/PWGHF -I$ALICE_ROOT/PWGHF/base -I$ALICE_ROOT/PWGHF/vertexingHF -I$ALICE_ROOT/PWG/FLOW/Base -I$ALICE_ROOT/PWG/FLOW/Tasks -I$ALICE_ROOT/PWG -g");

   plugin->SetDefaultOutputs(kTRUE);
   // merging via jdl
   plugin->SetMergeViaJDL(kTRUE);
   plugin->SetOneStageMerging(kFALSE);
   plugin->SetMaxMergeStages(2);

   // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
   plugin->SetAnalysisMacro("AnalysisHF.C");
   // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
   // Optionally modify the name of the generated JDL (default analysis.jdl)
   plugin->SetJDLName("TaskHF.jdl");

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