Adding AOD task for FMDEventPlaneFinder
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / MakeFMDEventPlane.C
1 /**
2  * @file   MakeFlow.C
3  * @author Alexander Hansen 
4  * @date   Wed Mar 23 12:11:33 2011
5  * 
6  * @brief  
7  * 
8  * @ingroup pwglf_forward_scripts_makers
9  * 
10  */
11 /**
12  * Script to analyse AOD input for flow
13  * 
14  * Takes either a single (AOD) .root file as input or a .txt
15  * The .txt file is expected to contain the path to the files 
16  * from the current directory or the absolute path.
17  * 
18  * @par Inputs: 
19  *  
20  * 
21  * @par Outputs: 
22  * - 
23  *
24  * @ingroup pwglf_forward_flow
25  */
26 void MakeFMDEventPlane(TString data      = "", 
27                        Int_t   nEvents   = 0, 
28                        Bool_t  mc        = kFALSE,
29                        const char* name  = 0,
30                        Int_t   proof     = 0,
31                        Bool_t  gdb       = kFALSE)
32 {
33   // --- Load libs ---------------------------------------------------
34   gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
35
36   // --- Possibly use plug-in for this -------------------------------
37   if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
38  
39     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/TrainSetup.C+");
40     gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/MakeFMDEventPlaneTrain.C+");
41
42     MakeFMDEventPlaneTrain t(name, mc, false);
43     t.SetDataDir(data.Data());
44     t.SetDataSet("");
45     t.SetProofServer(Form("workers=%d", proof));
46     t.SetUseGDB(gdb);
47     t.Run(proof > 0 ? "proof" : "local", "full", nEvents, proof > 0);
48     return;
49   }
50
51   // --- Set the macro path ------------------------------------------
52   gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
53                            "$ALICE_ROOT/ANALYSIS/macros",
54                            gROOT->GetMacroPath()));
55
56   // --- Add to chain either AOD ------------------------------------
57   if (data.IsNull()) {
58     AliError("You didn't add a data file");
59     return;
60   }
61   gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
62   TChain* chain = MakeChain("AOD", data.Data(), true);
63   
64   // If 0 or less events is select, choose all 
65   if (nEvents <= 0) nEvents = chain->GetEntries();
66
67   // --- Initiate the event handlers --------------------------------
68   AliAnalysisManager *mgr  = new AliAnalysisManager("FMD Event Plane", 
69                                                     "Event plane forward region");
70
71   // --- AOD input handler -------------------------------------------
72   AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
73   mgr->SetInputEventHandler(aodInputHandler); 
74
75   // --- Add the tasks ---------------------------------------------
76   gROOT->LoadMacro("AddTaskFMDEventPlane.C");
77   AddTaskFMDEventPlane(mc);
78
79   // --- Run the analysis --------------------------------------------
80   TStopwatch t;
81   if (!mgr->InitAnalysis()) {
82     Error("MakeFMDEventPlane", "Failed to initialize analysis train!");
83     return;
84   }
85   mgr->PrintStatus();
86   Printf("****************************************");
87   Printf("Doing FMD event plane analysis on %d Events", nEvents);
88   Printf("****************************************");
89   // 
90   if (mgr->GetDebugLevel() < 1) 
91     mgr->SetUseProgressBar(kTRUE, nEvents < 10000 ? 100 : 1000);
92
93 //  mgr->SetSkipTerminate(true);
94
95   t.Start();
96   mgr->StartAnalysis("local", chain, nEvents);
97   t.Stop();
98   t.Print();
99 }
100 //----------------------------------------------------------------
101 //
102 // EOF
103 //