ROOT logo
/**
 * @file 
 * 
 * @ingroup pwg2_forward_scripts
 */

/** 
 * Run first pass of the analysis - that is read in ESD and produce AOD
 * 
 * @param esddir    ESD input directory. Any file matching the pattern 
 *                  *AliESDs*.root are added to the chain 
 * @param nEvents   Number of events to process.  If 0 or less, then 
 *                  all events are analysed
 * @param proof     Run in proof mode 
 * @param mc        Run over MC data
 *
 * If PROOF mode is selected, then Terminate will be run on the master node 
 * in any case. 
 * 
 *
 * @ingroup pwg2_forward_scripts
 */
void MakeMultiplicityDistributions(const char* aoddir=".", 
				   Int_t       nEvents=-1, 
				   const char* trig="INEL",
				   Double_t    vzMin=-10,
				   Double_t    vzMax=10,
				   Int_t    lowCent= 0,
				   Int_t    highCent= 0,
				   char*       output="forward_multiplicity.root",	   
				   Int_t       nBins= 500,
				   Int_t       proof=0)
{
  // --- Libraries to load -------------------------------------------
  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");

  // --- Check for proof mode, and possibly upload pars --------------
  if (proof> 0) { 
    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadPars.C");
    LoadPars(proof);
  }
  
  // --- Our data chain ----------------------------------------------
  std::cout << "making chain of files" << std::endl;
  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
  TChain* chain = MakeChain("AOD", aoddir,true);
  // If 0 or less events is select, choose all 
  if (nEvents <= 0) nEvents = chain->GetEntries();

  // --- Creating the manager and handlers ---------------------------
  AliAnalysisManager *mgr  = new AliAnalysisManager("Forward Train", 
						    "Forward Multiplicity");

  if(lowCent>=highCent)
    AliAnalysisManager::SetCommonFileName(output);
  else{
    Char_t* name = Form("%s_cent_%d_%d.root",output,lowCent, highCent);
    AliAnalysisManager::SetCommonFileName(name);
  }
  // --- ESD input handler -------------------------------------------
  AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
  mgr->SetInputEventHandler(aodInputHandler);      
       
  // --- Add tasks ---------------------------------------------------
  // Forward 
  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskMultiplicity.C");
  AddTaskMultiplicity(trig, vzMin, vzMax, lowCent, highCent, nBins);
  
  
  // --- Run the analysis --------------------------------------------
  TStopwatch t;
  if (!mgr->InitAnalysis()) {
    Error("MakeMult", "Failed to initialize analysis train!");
    return;
  }
  // Skip terminate if we're so requested and not in Proof or full mode
  mgr->SetSkipTerminate(false);
  // Some informative output 
  mgr->PrintStatus();
  // mgr->SetDebugLevel(3);
  if (mgr->GetDebugLevel() < 1 && !proof) 
    mgr->SetUseProgressBar(kTRUE,100);

  // Run the train 
  t.Start();
  Printf("=== RUNNING ANALYSIS ==================================");
  mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
  t.Stop();
  t.Print();
}
//
// EOF
//
 MakeMultiplicityDistributions.C:1
 MakeMultiplicityDistributions.C:2
 MakeMultiplicityDistributions.C:3
 MakeMultiplicityDistributions.C:4
 MakeMultiplicityDistributions.C:5
 MakeMultiplicityDistributions.C:6
 MakeMultiplicityDistributions.C:7
 MakeMultiplicityDistributions.C:8
 MakeMultiplicityDistributions.C:9
 MakeMultiplicityDistributions.C:10
 MakeMultiplicityDistributions.C:11
 MakeMultiplicityDistributions.C:12
 MakeMultiplicityDistributions.C:13
 MakeMultiplicityDistributions.C:14
 MakeMultiplicityDistributions.C:15
 MakeMultiplicityDistributions.C:16
 MakeMultiplicityDistributions.C:17
 MakeMultiplicityDistributions.C:18
 MakeMultiplicityDistributions.C:19
 MakeMultiplicityDistributions.C:20
 MakeMultiplicityDistributions.C:21
 MakeMultiplicityDistributions.C:22
 MakeMultiplicityDistributions.C:23
 MakeMultiplicityDistributions.C:24
 MakeMultiplicityDistributions.C:25
 MakeMultiplicityDistributions.C:26
 MakeMultiplicityDistributions.C:27
 MakeMultiplicityDistributions.C:28
 MakeMultiplicityDistributions.C:29
 MakeMultiplicityDistributions.C:30
 MakeMultiplicityDistributions.C:31
 MakeMultiplicityDistributions.C:32
 MakeMultiplicityDistributions.C:33
 MakeMultiplicityDistributions.C:34
 MakeMultiplicityDistributions.C:35
 MakeMultiplicityDistributions.C:36
 MakeMultiplicityDistributions.C:37
 MakeMultiplicityDistributions.C:38
 MakeMultiplicityDistributions.C:39
 MakeMultiplicityDistributions.C:40
 MakeMultiplicityDistributions.C:41
 MakeMultiplicityDistributions.C:42
 MakeMultiplicityDistributions.C:43
 MakeMultiplicityDistributions.C:44
 MakeMultiplicityDistributions.C:45
 MakeMultiplicityDistributions.C:46
 MakeMultiplicityDistributions.C:47
 MakeMultiplicityDistributions.C:48
 MakeMultiplicityDistributions.C:49
 MakeMultiplicityDistributions.C:50
 MakeMultiplicityDistributions.C:51
 MakeMultiplicityDistributions.C:52
 MakeMultiplicityDistributions.C:53
 MakeMultiplicityDistributions.C:54
 MakeMultiplicityDistributions.C:55
 MakeMultiplicityDistributions.C:56
 MakeMultiplicityDistributions.C:57
 MakeMultiplicityDistributions.C:58
 MakeMultiplicityDistributions.C:59
 MakeMultiplicityDistributions.C:60
 MakeMultiplicityDistributions.C:61
 MakeMultiplicityDistributions.C:62
 MakeMultiplicityDistributions.C:63
 MakeMultiplicityDistributions.C:64
 MakeMultiplicityDistributions.C:65
 MakeMultiplicityDistributions.C:66
 MakeMultiplicityDistributions.C:67
 MakeMultiplicityDistributions.C:68
 MakeMultiplicityDistributions.C:69
 MakeMultiplicityDistributions.C:70
 MakeMultiplicityDistributions.C:71
 MakeMultiplicityDistributions.C:72
 MakeMultiplicityDistributions.C:73
 MakeMultiplicityDistributions.C:74
 MakeMultiplicityDistributions.C:75
 MakeMultiplicityDistributions.C:76
 MakeMultiplicityDistributions.C:77
 MakeMultiplicityDistributions.C:78
 MakeMultiplicityDistributions.C:79
 MakeMultiplicityDistributions.C:80
 MakeMultiplicityDistributions.C:81
 MakeMultiplicityDistributions.C:82
 MakeMultiplicityDistributions.C:83
 MakeMultiplicityDistributions.C:84
 MakeMultiplicityDistributions.C:85
 MakeMultiplicityDistributions.C:86
 MakeMultiplicityDistributions.C:87
 MakeMultiplicityDistributions.C:88
 MakeMultiplicityDistributions.C:89
 MakeMultiplicityDistributions.C:90
 MakeMultiplicityDistributions.C:91
 MakeMultiplicityDistributions.C:92
 MakeMultiplicityDistributions.C:93
 MakeMultiplicityDistributions.C:94