]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FORWARD/analysis2/RunManager.C
Fixes for PROOF mode
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / RunManager.C
1 /** 
2  * Script to set-up a train 
3  * 
4  * @param esd           ESD file 
5  * @param mc            Whether to do MC or not
6  * @param nEvents       Number of events
7  * @param nCutBins      Bins to cut away 
8  * @param correctionCut 
9  *
10  * @ingroup pwg2_forward_analysis_scripts
11  */
12 void RunManager(const char* esd, Bool_t mc=kFALSE, Int_t nEvents=1000,
13                 Int_t nCutBins=1, Float_t correctionCut=0.1, 
14                 Bool_t proof=false)
15 {
16   gSystem->Load("libVMC");
17   gSystem->Load("libTree");
18   
19   gSystem->Load("libSTEERBase");
20   
21   gSystem->Load("libESD") ;
22   gSystem->Load("libAOD") ;
23   gSystem->Load("libANALYSIS");
24   gSystem->Load("libANALYSISalice");
25   
26   gSystem->Load("libPhysics");
27   gSystem->Load("libPWG0base");
28   gSystem->Load("libPWG0dep");
29   gSystem->Load("libPWG2forward");
30   gSystem->Load("libPWG2forward2");
31
32   if (proof) { 
33     gEnv->SetValue("Proof.GlobalPackageDirs", 
34                    Form("%s:%s", 
35                         gEnv->GetValue("Proof.GlobalPackageDirs", "."), 
36                         gSystem->Getenv("ALICE_ROOT")));
37     Info("RunManager", "PAR path=%s", 
38          gEnv->GetValue("Proof.GlobalPackageDirs", "."));
39     TProof::Open("workers=1");
40     const char* pkgs[] = { "STEERBase", "ESD", "AOD", "ANALYSIS", 
41                            "ANALYSISalice", "PWG2forward", "PWG2forward2", 0};
42     const char** pkg = pkgs;
43     while (*pkg) { 
44       gProof->UploadPackage(Form("${ALICE_ROOT}/%s.par",*pkg));
45       gProof->EnablePackage(*pkg);    
46       pkg++;
47     }
48     gProof->ShowPackages();
49   }
50   
51   //You can expand this chain if you have more data :-)
52   TChain* chain = new TChain("esdTree");
53   chain->Add(esd);
54   
55   //Creating the manager and handlers
56   AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", 
57                                                     "FMD analysis train");
58   AliESDInputHandler *esdHandler = new AliESDInputHandler();
59   esdHandler->SetInactiveBranches("AliESDACORDE "
60                                   "AliRawDataErrorLogs "
61                                   "CaloClusters "
62                                   "Cascades "
63                                   "EMCALCells "
64                                   "EMCALTrigger "
65                                   "Kinks "
66                                   "Cascades "
67                                   "MuonTracks "
68                                   "TrdTracks "
69                                   "CaloClusters "
70                                   "HLTGlobalTrigger");
71   mgr->SetInputEventHandler(esdHandler);      
72        
73        
74   // Monte Carlo handler
75   // AliMCEventHandler* mcHandler = new AliMCEventHandler();
76   // mgr->SetMCtruthEventHandler(mcHandler);
77   // mcHandler->SetReadTR(readTR);    
78   
79   // AOD output handler
80   AliAODHandler* aodHandler   = new AliAODHandler();
81   mgr->SetOutputEventHandler(aodHandler);
82   aodHandler->SetOutputFileName("foo.root");
83     
84   gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/AddTaskFMD.C");
85   gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
86   AliAnalysisTask* task = AddTaskFMD(nCutBins, correctionCut);
87   mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
88
89   task = AddTaskPhysicsSelection(mc, kTRUE, kTRUE);
90   mgr->ConnectOutput(task, 0, mgr->GetCommonOutputContainer());
91   
92   // Run the analysis
93     
94   TStopwatch t;
95   if (!mgr->InitAnalysis()) {
96     Error("RunManager", "Failed to initialize analysis train!");
97     return;
98   }
99   // Some informative output 
100   mgr->PrintStatus();
101   mgr->SetUseProgressBar(kTRUE);
102
103   // Write train to file - a test 
104 #if 0
105   TDirectory* savDir = gDirectory;
106   TFile* file = TFile::Open("analysisTrain.root", "RECREATE");
107   mgr->Write();
108   file->Close();
109   savDir->cd();
110 #endif
111
112   // Run the train 
113   t.Start();
114   mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
115   t.Stop();
116   t.Print();
117 }
118 //
119 // EOF
120 //