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 CreateResponseMatrices(const char* aoddir=".", 
	        Int_t       nEvents=-1, 
		const char* trig="INEL",
		Double_t    vzMin=-10,
		Double_t    vzMax=10,
		char* output="responseMatrices.root",
	        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 ----------------------------------------------
  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");
  AliAnalysisManager::SetCommonFileName(output);

  // --- ESD input handler -------------------------------------------
  AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
  mgr->SetInputEventHandler(aodInputHandler);      
       
  // --- Add tasks ---------------------------------------------------
  // Forward 
  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskCreateResponseMatrices.C");
  AddTaskCreateResponseMatrices(trig, vzMin, vzMax);
  
  
  // --- 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
//
 CreateResponseMatrices.C:1
 CreateResponseMatrices.C:2
 CreateResponseMatrices.C:3
 CreateResponseMatrices.C:4
 CreateResponseMatrices.C:5
 CreateResponseMatrices.C:6
 CreateResponseMatrices.C:7
 CreateResponseMatrices.C:8
 CreateResponseMatrices.C:9
 CreateResponseMatrices.C:10
 CreateResponseMatrices.C:11
 CreateResponseMatrices.C:12
 CreateResponseMatrices.C:13
 CreateResponseMatrices.C:14
 CreateResponseMatrices.C:15
 CreateResponseMatrices.C:16
 CreateResponseMatrices.C:17
 CreateResponseMatrices.C:18
 CreateResponseMatrices.C:19
 CreateResponseMatrices.C:20
 CreateResponseMatrices.C:21
 CreateResponseMatrices.C:22
 CreateResponseMatrices.C:23
 CreateResponseMatrices.C:24
 CreateResponseMatrices.C:25
 CreateResponseMatrices.C:26
 CreateResponseMatrices.C:27
 CreateResponseMatrices.C:28
 CreateResponseMatrices.C:29
 CreateResponseMatrices.C:30
 CreateResponseMatrices.C:31
 CreateResponseMatrices.C:32
 CreateResponseMatrices.C:33
 CreateResponseMatrices.C:34
 CreateResponseMatrices.C:35
 CreateResponseMatrices.C:36
 CreateResponseMatrices.C:37
 CreateResponseMatrices.C:38
 CreateResponseMatrices.C:39
 CreateResponseMatrices.C:40
 CreateResponseMatrices.C:41
 CreateResponseMatrices.C:42
 CreateResponseMatrices.C:43
 CreateResponseMatrices.C:44
 CreateResponseMatrices.C:45
 CreateResponseMatrices.C:46
 CreateResponseMatrices.C:47
 CreateResponseMatrices.C:48
 CreateResponseMatrices.C:49
 CreateResponseMatrices.C:50
 CreateResponseMatrices.C:51
 CreateResponseMatrices.C:52
 CreateResponseMatrices.C:53
 CreateResponseMatrices.C:54
 CreateResponseMatrices.C:55
 CreateResponseMatrices.C:56
 CreateResponseMatrices.C:57
 CreateResponseMatrices.C:58
 CreateResponseMatrices.C:59
 CreateResponseMatrices.C:60
 CreateResponseMatrices.C:61
 CreateResponseMatrices.C:62
 CreateResponseMatrices.C:63
 CreateResponseMatrices.C:64
 CreateResponseMatrices.C:65
 CreateResponseMatrices.C:66
 CreateResponseMatrices.C:67
 CreateResponseMatrices.C:68
 CreateResponseMatrices.C:69
 CreateResponseMatrices.C:70
 CreateResponseMatrices.C:71
 CreateResponseMatrices.C:72
 CreateResponseMatrices.C:73
 CreateResponseMatrices.C:74
 CreateResponseMatrices.C:75
 CreateResponseMatrices.C:76
 CreateResponseMatrices.C:77
 CreateResponseMatrices.C:78
 CreateResponseMatrices.C:79
 CreateResponseMatrices.C:80
 CreateResponseMatrices.C:81
 CreateResponseMatrices.C:82
 CreateResponseMatrices.C:83
 CreateResponseMatrices.C:84
 CreateResponseMatrices.C:85