ROOT logo
void analyzeJpsiME(TString tag="./"){

  TStopwatch timer;
  timer.Start();
  
  //_____________Setting up libraries_______________
  gSystem->Load("libTree.so");
  gSystem->Load("libSTEERBase.so");
  gSystem->Load("libVMC.so");
  gSystem->Load("libESD.so");
  gSystem->Load("libANALYSIS.so");
  gSystem->Load("libANALYSISalice");
  gSystem->Load("libCORRFW");
  gSystem->Load("libPWGDQdielectron.so");
  gSystem->AddIncludePath("-I$ALICE_ROOT/PWGDQ/dielectron/ -I$ALICE_ROOT/ANALYSIS -I$ALICE_ROOT/CORRFW");

  //_____________Load Macro_____________________________
  gROOT->LoadMacro("ConfigJpsi2eeData.C");    // user Config file
  
  // Make the analysis manager__________________________
  AliAnalysisManager *mgr       = new AliAnalysisManager("AnalysisManager");

  // Event handler setting
  Int_t nEventsToLoad = 5;    // pool depth
  AliMultiEventInputHandler *inputHandler  = new AliMultiEventInputHandler(nEventsToLoad,0);  // 0 for ESD, 1 for AOD
  mgr->SetInputEventHandler(inputHandler);
  
  // event pool setting
  AliEventPoolOTF *myPool = new AliEventPoolOTF("event pool","ESD");
  myPool->SetTagDirectory(tag.Data());
  myPool->SetMultiplicityBin(0,100,100);  // (min, max, bin width)
  myPool->Init();

  mgr->SetEventPool(myPool);            // link event pool with manager
  inputHandler->SetEventPool(myPool);   // link event pool with input handler

  // Analysis Task Jpsi->e+e-___________________________
  AliAnalysisTaskDielectronME *task = new AliAnalysisTaskDielectronME("DielectronTaskME");
  task->RequireFreshBuffer();         // refresh mode in the pool
  task->SetPoolDepth(nEventsToLoad);  // set pool depth in the task
  mgr->AddTask(task);

  // add dielectron analysis with different cuts to the task
  for (Int_t i=0; i<nDie; ++i){       //nDie defined in config file
    AliDielectron *jpsi=ConfigJpsi2ee(i);
    task->AddDielectron(jpsi);
  }

  // Create containers for input/output_________________
  AliAnalysisDataContainer *coutput1     = mgr->CreateContainer("jpsi_treeEff",TTree::Class(),AliAnalysisManager::kExchangeContainer,"jpsi_Effdefault");
  AliAnalysisDataContainer *cOutputHist1 = mgr->CreateContainer("QA", TList::Class(), AliAnalysisManager::kOutputContainer, "jpsi_QA.root");
  AliAnalysisDataContainer *cOutputHist2 = mgr->CreateContainer("CF", TList::Class(), AliAnalysisManager::kOutputContainer, "jpsi_CF.root");
  AliAnalysisDataContainer *cOutputHist3 = mgr->CreateContainer("jpsi_Eff_EventStat",TH1D::Class(),AliAnalysisManager::kOutputContainer,"jpsi_Eff.root");
  
  mgr->ConnectInput(task,  0, mgr->GetCommonInputContainer());
  mgr->ConnectOutput(task, 0, coutput1 );
  mgr->ConnectOutput(task, 1, cOutputHist1);
  mgr->ConnectOutput(task, 2, cOutputHist2); 
  mgr->ConnectOutput(task, 3, cOutputHist3);

  if (!mgr->InitAnalysis()) return;
  mgr->PrintStatus();
  TChain *chain = NULL;     // null pointer to avoid entering grid mode. temporary solution
  mgr->StartAnalysis("mix",chain);
  //mgr->Terminate();

  timer.Stop();
  timer.Print();
}
 analyzeJpsiME.C:1
 analyzeJpsiME.C:2
 analyzeJpsiME.C:3
 analyzeJpsiME.C:4
 analyzeJpsiME.C:5
 analyzeJpsiME.C:6
 analyzeJpsiME.C:7
 analyzeJpsiME.C:8
 analyzeJpsiME.C:9
 analyzeJpsiME.C:10
 analyzeJpsiME.C:11
 analyzeJpsiME.C:12
 analyzeJpsiME.C:13
 analyzeJpsiME.C:14
 analyzeJpsiME.C:15
 analyzeJpsiME.C:16
 analyzeJpsiME.C:17
 analyzeJpsiME.C:18
 analyzeJpsiME.C:19
 analyzeJpsiME.C:20
 analyzeJpsiME.C:21
 analyzeJpsiME.C:22
 analyzeJpsiME.C:23
 analyzeJpsiME.C:24
 analyzeJpsiME.C:25
 analyzeJpsiME.C:26
 analyzeJpsiME.C:27
 analyzeJpsiME.C:28
 analyzeJpsiME.C:29
 analyzeJpsiME.C:30
 analyzeJpsiME.C:31
 analyzeJpsiME.C:32
 analyzeJpsiME.C:33
 analyzeJpsiME.C:34
 analyzeJpsiME.C:35
 analyzeJpsiME.C:36
 analyzeJpsiME.C:37
 analyzeJpsiME.C:38
 analyzeJpsiME.C:39
 analyzeJpsiME.C:40
 analyzeJpsiME.C:41
 analyzeJpsiME.C:42
 analyzeJpsiME.C:43
 analyzeJpsiME.C:44
 analyzeJpsiME.C:45
 analyzeJpsiME.C:46
 analyzeJpsiME.C:47
 analyzeJpsiME.C:48
 analyzeJpsiME.C:49
 analyzeJpsiME.C:50
 analyzeJpsiME.C:51
 analyzeJpsiME.C:52
 analyzeJpsiME.C:53
 analyzeJpsiME.C:54
 analyzeJpsiME.C:55
 analyzeJpsiME.C:56
 analyzeJpsiME.C:57
 analyzeJpsiME.C:58
 analyzeJpsiME.C:59
 analyzeJpsiME.C:60
 analyzeJpsiME.C:61
 analyzeJpsiME.C:62
 analyzeJpsiME.C:63
 analyzeJpsiME.C:64
 analyzeJpsiME.C:65
 analyzeJpsiME.C:66
 analyzeJpsiME.C:67
 analyzeJpsiME.C:68
 analyzeJpsiME.C:69
 analyzeJpsiME.C:70