Mior fixes
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / MakeELossFits.C
1 /**
2  * @file   MakeELossFits.C
3  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
4  * @date   Wed Mar 23 14:08:14 2011
5  * 
6  * @brief  
7  * 
8  * 
9  * @ingroup pwg2_forward_eloss
10  */
11 /** 
12  * Run a pass on ESD data to produce the energ loss fits 
13  * 
14  *
15  * @ingroup pwg2_forward_eloss
16  */
17 void MakeELossFits(const char* esddir, 
18                    Int_t       nEvents = 1000, 
19                    Int_t       proof   = 0,
20                    Bool_t      mc      = false,
21                    Bool_t      cent    = false,
22                    const char* name    = 0)
23 {
24   // --- Possibly use plug-in for this -------------------------------
25   if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
26     gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWG2/FORWARD/analysis2:"
27                              "$ALICE_ROOT/ANALYSIS/macros",
28                              gROOT->GetMacroPath()));
29     gSystem->AddIncludePath("-I${ALICE_ROOT}/include");
30     gSystem->Load("libANALYSIS");
31     gSystem->Load("libANALYSISalice");
32     gROOT->LoadMacro("TrainSetup.C+");
33     FMDELossTrain t(name, cent, false);
34     t.SetDataDir(esddir);
35     t.SetDataSet("");
36     t.SetProofServer(Form("workers=%d",proof));
37     t.Run(proof > 0 ? "PROOF" : "LOCAL", "FULL", nEvents, mc, proof > 0);
38     return;
39   }
40
41   // --- Libraries to load -------------------------------------------
42   gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C");
43
44   // --- Check for proof mode, and possibly upload pars --------------
45   if (proof > 0) {
46     gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadPars.C");
47     LoadPars(proof);
48   }
49   
50   // --- Our data chain ----------------------------------------------
51   gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/MakeChain.C");
52   TChain* chain = MakeChain("ESD",esddir, true);
53   // If 0 or less events is select, choose all 
54   if (nEvents <= 0) nEvents = chain->GetEntries();
55   Info("MakeELossFits", "Will analyse %d events", nEvents);
56
57   // --- Set the macro path ------------------------------------------
58   gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWG2/FORWARD/analysis2:"
59                            "$ALICE_ROOT/ANALYSIS/macros",
60                            gROOT->GetMacroPath()));
61
62   // --- Creating the manager and handlers ---------------------------
63   AliAnalysisManager *mgr  = new AliAnalysisManager("Forward ELoss Train", 
64                                                     "Forward energy loss");
65   AliAnalysisManager::SetCommonFileName("forward_eloss.root");
66
67   // --- ESD input handler -------------------------------------------
68   AliESDInputHandler *esdHandler = new AliESDInputHandler();
69   mgr->SetInputEventHandler(esdHandler);      
70        
71   // --- Monte Carlo handler -----------------------------------------
72   if (mc) {
73     AliMCEventHandler* mcHandler = new AliMCEventHandler();
74     mgr->SetMCtruthEventHandler(mcHandler);
75     mcHandler->SetReadTR(true);    
76   }
77
78   // --- Add tasks ---------------------------------------------------
79   gROOT->LoadMacro("AddTaskPhysicsSelection.C");
80   AddTaskPhysicsSelection(mc, kTRUE, kFALSE);
81   
82   // Centrality 
83   if(cent) {
84     gROOT->LoadMacro("AddTaskCentrality.C");
85     AddTaskCentrality();
86   }
87   
88   // FMD ELoss fitter 
89   gROOT->LoadMacro("AddTaskFMDELoss.C");
90   AddTaskFMDELoss(mc, cent);
91
92   // --- Run the analysis --------------------------------------------
93   TStopwatch t;
94   if (!mgr->InitAnalysis()) {
95     Error("RunManager", "Failed to initialize analysis train!");
96     return;
97   }
98   // Some informative output 
99   mgr->PrintStatus();
100   // mgr->SetDebugLevel(3);
101   if (mgr->GetDebugLevel() < 1 && proof <= 0) 
102     mgr->SetUseProgressBar(kTRUE,100);
103
104   // Run the train 
105   t.Start();
106   Printf("=== RUNNING ANALYSIS on %9d events ========================",nEvents);
107   mgr->StartAnalysis(proof > 0 ? "proof" : "local", chain, nEvents);
108   t.Stop();
109   t.Print();
110 }
111 //
112 // EOF
113 //