Various fixes to deal with centrality
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / MakedNdeta.C
1 /**
2  * @file 
3  * 
4  * @ingroup pwg2_forward_scripts
5  */
6
7 /** 
8  * Run first pass of the analysis - that is read in ESD and produce AOD
9  * 
10  * @param esddir    ESD input directory. Any file matching the pattern 
11  *                  *AliESDs*.root are added to the chain 
12  * @param nEvents   Number of events to process.  If 0 or less, then 
13  *                  all events are analysed
14  * @param proof     Run in proof mode 
15  * @param mc        Run over MC data
16  *
17  * If PROOF mode is selected, then Terminate will be run on the master node 
18  * in any case. 
19  * 
20  *
21  * @ingroup pwg2_forward_scripts
22  */
23 void MakedNdeta(const char* aoddir   = ".", 
24                 Int_t       nEvents  = -1, 
25                 const char* trig     = "INEL",
26                 Bool_t      useCent  = false,
27                 Double_t    vzMin    = -10,
28                 Double_t    vzMax    = +10,
29                 Int_t       proof    = 0)
30 {
31   // --- Libraries to load -------------------------------------------
32   gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C");
33
34   // --- Check for proof mode, and possibly upload pars --------------
35   if (proof> 0) { 
36     gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadPars.C");
37     LoadPars(proof);
38   }
39   
40   // --- Our data chain ----------------------------------------------
41   gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/MakeChain.C");
42   TChain* chain = MakeChain("AOD", aoddir,true);
43   // If 0 or less events is select, choose all 
44   if (nEvents <= 0) nEvents = chain->GetEntries();
45
46   // --- Set the macro path ------------------------------------------
47   gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWG2/FORWARD/analysis2:"
48                            "$ALICE_ROOT/ANALYSIS/macros",
49                            gROOT->GetMacroPath()));
50
51   // --- Creating the manager and handlers ---------------------------
52   AliAnalysisManager *mgr  = new AliAnalysisManager("Forward Train", 
53                                                     "Forward dN/deta");
54   AliAnalysisManager::SetCommonFileName("forward_dndeta.root");
55
56   // --- ESD input handler -------------------------------------------
57   AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
58   mgr->SetInputEventHandler(aodInputHandler);      
59        
60   // --- Add tasks ---------------------------------------------------
61   // Forward 
62   gROOT->LoadMacro("AddTaskForwarddNdeta.C");
63   AddTaskForwarddNdeta(trig, vzMin, vzMax, useCent, true);
64   // Central
65   gROOT->LoadMacro("AddTaskCentraldNdeta.C");
66   AddTaskCentraldNdeta(trig, vzMin, vzMax, useCent);
67
68   
69   // --- Run the analysis --------------------------------------------
70   TStopwatch t;
71   if (!mgr->InitAnalysis()) {
72     Error("MakedNdeta", "Failed to initialize analysis train!");
73     return;
74   }
75   // Skip terminate if we're so requested and not in Proof or full mode
76   mgr->SetSkipTerminate(false);
77   // Some informative output 
78   mgr->PrintStatus();
79   // mgr->SetDebugLevel(3);
80   if (mgr->GetDebugLevel() < 1 && !proof) 
81     mgr->SetUseProgressBar(kTRUE,100);
82   
83   // Run the train 
84   t.Start();
85   Printf("=== RUNNING ANALYSIS ==================================");
86   mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
87   t.Stop();
88   t.Print();
89 }
90 //
91 // EOF
92 //