ROOT logo
void AliAnalysisTaskSEVertexingHFTest()
{
  //
  // Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing
  // A.Dainese, andrea.dainese@lnl.infn.it
  //

  Bool_t inputAOD=kFALSE; // otherwise, ESD
  Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing
                          // kFALSE: use ESD as input to vertexing
  Bool_t writeKineToAOD = kFALSE;
  TString mode="local"; // otherwise, "grid" 
  Bool_t useParFiles=kFALSE;
  Bool_t doCentrality=kTRUE;

  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");
  LoadLibraries(useParFiles);
  gSystem->Load("libPWGmuon");
  TChain *chain = 0;

  if(mode=="local") {
    // Local files 
    TString treeName,fileName;
    if(inputAOD) {
      treeName="aodTree"; 
      fileName="AliAOD.root";
    } else {
      treeName="esdTree"; 
      fileName="AliESDs.root";
    }
    chain = new TChain(treeName.Data());
    chain->Add(fileName.Data());

  } else if (mode=="grid") {
    //Fetch files with AliEn :
    const char *collectionfile = "Collection.xml";
    TGrid::Connect("alien://") ;
    TAlienCollection *coll   = TAlienCollection::Open(collectionfile);
    if(inputAOD) { // input AOD
      chain = new TChain("aodTree");
      while(coll->Next()) chain->Add(coll->GetTURL(""));
    } else { // input ESD
      //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria
      AliRunTagCuts      *runCuts   = new AliRunTagCuts();
      AliEventTagCuts    *eventCuts = new AliEventTagCuts();
      AliLHCTagCuts      *lhcCuts   = new AliLHCTagCuts();
      AliDetectorTagCuts *detCuts   = new AliDetectorTagCuts();
      eventCuts->SetMultiplicityRange(0,20000);
      //Create an AliTagAnalysis Object and chain the tags
      AliTagAnalysis   *tagAna = new AliTagAnalysis();
      tagAna->SetType("ESD");
      TGridResult      *tagResult = coll->GetGridResult("",0,0);
      tagResult->Print();
      tagAna->ChainGridTags(tagResult);
      //Create a new esd chain and assign the chain that is returned by querying the tags
      chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);
    }
  } else {
    printf("ERROR: mode has to be \"local\" or \"grid\" \n");
    return;
  }


  // Create the analysis manager
  AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager","My Manager");
  mgr->SetDebugLevel(10);
  
  // Input Handler
  AliInputEventHandler *inputHandler = 0;
  if(inputAOD) {
    inputHandler = new AliAODInputHandler();
  } else {
    inputHandler = new AliESDInputHandler();
  }
  mgr->SetInputEventHandler(inputHandler);
  
  // Output 
  AliAODHandler *aodHandler = new AliAODHandler();
  const char* deltaAODfname="AliAOD.VertexingHF.root";
  if(createAOD) {
    aodHandler->SetOutputFileName("AliAOD.root");
  } else {
    aodHandler->SetOutputFileName(deltaAODfname);
    aodHandler->SetAODExtensionMode();
  }
  mgr->SetOutputEventHandler(aodHandler);
  mgr->RegisterExtraFile(deltaAODfname);  

  if(!inputAOD && createAOD) {
    // MC Truth
    AliMCEventHandler* mcHandler = new AliMCEventHandler();
    if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);
    AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");
    if(writeKineToAOD) mgr->AddTask(kinefilter);  
    // Centrality
    if(doCentrality){
      gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
      AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
    }

    gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
    AliAnalysisTaskESDfilter *filter = AddTaskESDFilter(writeKineToAOD);
   
  }

  // Vertexing analysis task    
  gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/AddTaskVertexingHF.C");
  AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);
  
  
  //
  // Run the analysis
  //    
  printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());
  if(!mgr->InitAnalysis()) return;

  mgr->PrintStatus();

  TStopwatch watch;
  watch.Start();
  mgr->StartAnalysis(mode.Data(),chain);
  watch.Stop();
  watch.Print();

  return;
}
 AliAnalysisTaskSEVertexingHFTest.C:1
 AliAnalysisTaskSEVertexingHFTest.C:2
 AliAnalysisTaskSEVertexingHFTest.C:3
 AliAnalysisTaskSEVertexingHFTest.C:4
 AliAnalysisTaskSEVertexingHFTest.C:5
 AliAnalysisTaskSEVertexingHFTest.C:6
 AliAnalysisTaskSEVertexingHFTest.C:7
 AliAnalysisTaskSEVertexingHFTest.C:8
 AliAnalysisTaskSEVertexingHFTest.C:9
 AliAnalysisTaskSEVertexingHFTest.C:10
 AliAnalysisTaskSEVertexingHFTest.C:11
 AliAnalysisTaskSEVertexingHFTest.C:12
 AliAnalysisTaskSEVertexingHFTest.C:13
 AliAnalysisTaskSEVertexingHFTest.C:14
 AliAnalysisTaskSEVertexingHFTest.C:15
 AliAnalysisTaskSEVertexingHFTest.C:16
 AliAnalysisTaskSEVertexingHFTest.C:17
 AliAnalysisTaskSEVertexingHFTest.C:18
 AliAnalysisTaskSEVertexingHFTest.C:19
 AliAnalysisTaskSEVertexingHFTest.C:20
 AliAnalysisTaskSEVertexingHFTest.C:21
 AliAnalysisTaskSEVertexingHFTest.C:22
 AliAnalysisTaskSEVertexingHFTest.C:23
 AliAnalysisTaskSEVertexingHFTest.C:24
 AliAnalysisTaskSEVertexingHFTest.C:25
 AliAnalysisTaskSEVertexingHFTest.C:26
 AliAnalysisTaskSEVertexingHFTest.C:27
 AliAnalysisTaskSEVertexingHFTest.C:28
 AliAnalysisTaskSEVertexingHFTest.C:29
 AliAnalysisTaskSEVertexingHFTest.C:30
 AliAnalysisTaskSEVertexingHFTest.C:31
 AliAnalysisTaskSEVertexingHFTest.C:32
 AliAnalysisTaskSEVertexingHFTest.C:33
 AliAnalysisTaskSEVertexingHFTest.C:34
 AliAnalysisTaskSEVertexingHFTest.C:35
 AliAnalysisTaskSEVertexingHFTest.C:36
 AliAnalysisTaskSEVertexingHFTest.C:37
 AliAnalysisTaskSEVertexingHFTest.C:38
 AliAnalysisTaskSEVertexingHFTest.C:39
 AliAnalysisTaskSEVertexingHFTest.C:40
 AliAnalysisTaskSEVertexingHFTest.C:41
 AliAnalysisTaskSEVertexingHFTest.C:42
 AliAnalysisTaskSEVertexingHFTest.C:43
 AliAnalysisTaskSEVertexingHFTest.C:44
 AliAnalysisTaskSEVertexingHFTest.C:45
 AliAnalysisTaskSEVertexingHFTest.C:46
 AliAnalysisTaskSEVertexingHFTest.C:47
 AliAnalysisTaskSEVertexingHFTest.C:48
 AliAnalysisTaskSEVertexingHFTest.C:49
 AliAnalysisTaskSEVertexingHFTest.C:50
 AliAnalysisTaskSEVertexingHFTest.C:51
 AliAnalysisTaskSEVertexingHFTest.C:52
 AliAnalysisTaskSEVertexingHFTest.C:53
 AliAnalysisTaskSEVertexingHFTest.C:54
 AliAnalysisTaskSEVertexingHFTest.C:55
 AliAnalysisTaskSEVertexingHFTest.C:56
 AliAnalysisTaskSEVertexingHFTest.C:57
 AliAnalysisTaskSEVertexingHFTest.C:58
 AliAnalysisTaskSEVertexingHFTest.C:59
 AliAnalysisTaskSEVertexingHFTest.C:60
 AliAnalysisTaskSEVertexingHFTest.C:61
 AliAnalysisTaskSEVertexingHFTest.C:62
 AliAnalysisTaskSEVertexingHFTest.C:63
 AliAnalysisTaskSEVertexingHFTest.C:64
 AliAnalysisTaskSEVertexingHFTest.C:65
 AliAnalysisTaskSEVertexingHFTest.C:66
 AliAnalysisTaskSEVertexingHFTest.C:67
 AliAnalysisTaskSEVertexingHFTest.C:68
 AliAnalysisTaskSEVertexingHFTest.C:69
 AliAnalysisTaskSEVertexingHFTest.C:70
 AliAnalysisTaskSEVertexingHFTest.C:71
 AliAnalysisTaskSEVertexingHFTest.C:72
 AliAnalysisTaskSEVertexingHFTest.C:73
 AliAnalysisTaskSEVertexingHFTest.C:74
 AliAnalysisTaskSEVertexingHFTest.C:75
 AliAnalysisTaskSEVertexingHFTest.C:76
 AliAnalysisTaskSEVertexingHFTest.C:77
 AliAnalysisTaskSEVertexingHFTest.C:78
 AliAnalysisTaskSEVertexingHFTest.C:79
 AliAnalysisTaskSEVertexingHFTest.C:80
 AliAnalysisTaskSEVertexingHFTest.C:81
 AliAnalysisTaskSEVertexingHFTest.C:82
 AliAnalysisTaskSEVertexingHFTest.C:83
 AliAnalysisTaskSEVertexingHFTest.C:84
 AliAnalysisTaskSEVertexingHFTest.C:85
 AliAnalysisTaskSEVertexingHFTest.C:86
 AliAnalysisTaskSEVertexingHFTest.C:87
 AliAnalysisTaskSEVertexingHFTest.C:88
 AliAnalysisTaskSEVertexingHFTest.C:89
 AliAnalysisTaskSEVertexingHFTest.C:90
 AliAnalysisTaskSEVertexingHFTest.C:91
 AliAnalysisTaskSEVertexingHFTest.C:92
 AliAnalysisTaskSEVertexingHFTest.C:93
 AliAnalysisTaskSEVertexingHFTest.C:94
 AliAnalysisTaskSEVertexingHFTest.C:95
 AliAnalysisTaskSEVertexingHFTest.C:96
 AliAnalysisTaskSEVertexingHFTest.C:97
 AliAnalysisTaskSEVertexingHFTest.C:98
 AliAnalysisTaskSEVertexingHFTest.C:99
 AliAnalysisTaskSEVertexingHFTest.C:100
 AliAnalysisTaskSEVertexingHFTest.C:101
 AliAnalysisTaskSEVertexingHFTest.C:102
 AliAnalysisTaskSEVertexingHFTest.C:103
 AliAnalysisTaskSEVertexingHFTest.C:104
 AliAnalysisTaskSEVertexingHFTest.C:105
 AliAnalysisTaskSEVertexingHFTest.C:106
 AliAnalysisTaskSEVertexingHFTest.C:107
 AliAnalysisTaskSEVertexingHFTest.C:108
 AliAnalysisTaskSEVertexingHFTest.C:109
 AliAnalysisTaskSEVertexingHFTest.C:110
 AliAnalysisTaskSEVertexingHFTest.C:111
 AliAnalysisTaskSEVertexingHFTest.C:112
 AliAnalysisTaskSEVertexingHFTest.C:113
 AliAnalysisTaskSEVertexingHFTest.C:114
 AliAnalysisTaskSEVertexingHFTest.C:115
 AliAnalysisTaskSEVertexingHFTest.C:116
 AliAnalysisTaskSEVertexingHFTest.C:117
 AliAnalysisTaskSEVertexingHFTest.C:118
 AliAnalysisTaskSEVertexingHFTest.C:119
 AliAnalysisTaskSEVertexingHFTest.C:120
 AliAnalysisTaskSEVertexingHFTest.C:121
 AliAnalysisTaskSEVertexingHFTest.C:122
 AliAnalysisTaskSEVertexingHFTest.C:123
 AliAnalysisTaskSEVertexingHFTest.C:124
 AliAnalysisTaskSEVertexingHFTest.C:125
 AliAnalysisTaskSEVertexingHFTest.C:126
 AliAnalysisTaskSEVertexingHFTest.C:127