Renames and new scripts
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / MakeAOD.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 MakeAOD(const char* esddir, 
24              Int_t       nEvents=-1, 
25              Int_t       proof=0,
26              Bool_t      mc=false)
27 {
28   // --- Libraries to load -------------------------------------------
29   gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C");
30
31   // --- Check for proof mode, and possibly upload pars --------------
32   if (proof> 0) { 
33     gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadPars.C");
34     LoadPars(proof);
35   }
36   
37   // --- Our data chain ----------------------------------------------
38   gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/MakeESDChain.C");
39   TChain* chain = MakeESDChain(esddir,true);
40   // If 0 or less events is select, choose all 
41   if (nEvents <= 0) nEvents = chain->GetEntries();
42
43   // --- Creating the manager and handlers ---------------------------
44   AliAnalysisManager *mgr  = new AliAnalysisManager("Forward Train", 
45                                                     "Forward multiplicity");
46   AliAnalysisManager::SetCommonFileName("forward.root");
47
48   // --- ESD input handler -------------------------------------------
49   AliESDInputHandler *esdHandler = new AliESDInputHandler();
50   esdHandler->SetInactiveBranches(// "AliESDRun " 
51                                   // "AliESDHeader "
52                                   // "AliESDZDC "
53                                   // "AliESDFMD "
54                                   // "AliESDVZERO " 
55                                   "AliESDTZERO " 
56                                   "TPCVertex " 
57                                   // "SPDVertex "
58                                   // "PrimaryVertex "
59                                   // "AliMultiplicity "
60                                   "PHOSTrigger "
61                                   "EMCALTrigger "
62                                   "SPDPileupVertices " 
63                                   "TrkPileupVertices " 
64                                   // "Tracks "
65                                   "MuonTracks " 
66                                   "PmdTracks "
67                                   "TrdTracks "
68                                   "V0s " 
69                                   "Cascades " 
70                                   "Kinks " 
71                                   "CaloClusters "
72                                   "EMCALLCells "
73                                   "PHOSCells "
74                                   "AliRawDataErrorLogs "
75                                   "ALIESDCACORDE " 
76                                   "HLTGlobalTrigger");
77   mgr->SetInputEventHandler(esdHandler);      
78        
79   // --- Monte Carlo handler -----------------------------------------
80   if (mc) {
81     AliMCEventHandler* mcHandler = new AliMCEventHandler();
82     mgr->SetMCtruthEventHandler(mcHandler);
83     mcHandler->SetReadTR(true);    
84   }
85
86   // --- AOD output handler ------------------------------------------
87   AliAODHandler* aodHandler   = new AliAODHandler();
88   mgr->SetOutputEventHandler(aodHandler);
89   aodHandler->SetOutputFileName("AliAODs.root");
90
91   // --- Add tasks ---------------------------------------------------
92   // Physics selection 
93   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
94   AddTaskPhysicsSelection(mc, kTRUE, kTRUE);
95
96 #if 1
97   // Centrality 
98   gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/Compile.C");
99   // gDebug = 10;
100   Compile("$ALICE_ROOT/PWG2/FORWARD/analysis2/AddTaskCopyHeader.C","+");
101   // gDebug = 10;
102   Compile("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/AliESDCentrality.C","+g");
103   // gDebug = 0;
104   AddTaskCopyHeader();
105
106
107   // Central multiplicity
108   Compile("$ALICE_ROOT/PWG2/FORWARD/analysis2/AddTaskCentralMult.C","+");
109   AddTaskCentralMult();
110 #endif
111
112   // FMD 
113   gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/AddTaskFMD.C");
114   AddTaskFMD(mc);
115
116   
117   // --- Run the analysis --------------------------------------------
118   TStopwatch t;
119   if (!mgr->InitAnalysis()) {
120     Error("MakeAOD", "Failed to initialize analysis train!");
121     return;
122   }
123   // Skip terminate if we're so requested and not in Proof or full mode
124   mgr->SetSkipTerminate(false);
125   // Some informative output 
126   mgr->PrintStatus();
127   // mgr->SetDebugLevel(3);
128   if (mgr->GetDebugLevel() < 1 && !proof) 
129     mgr->SetUseProgressBar(kTRUE);
130
131   // Run the train 
132   t.Start();
133   Printf("=== RUNNING ANALYSIS ==================================");
134   mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
135   t.Stop();
136   t.Print();
137 }
138 //
139 // EOF
140 //