]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/totEt/macros/runCaloEt.C
More fixes for running on the grid
[u/mrichter/AliRoot.git] / PWG4 / totEt / macros / runCaloEt.C
1 //Create by Christine Nattrass, Rebecca Scott, Irakli Martashvili
2 //University of Tennessee at Knoxville
3
4 //by default this runs locally
5 //With the argument true this submits jobs to the grid
6 //As written this requires an xml script tag.xml in the ~/et directory on the grid to submit jobs
7 void runCaloEt(bool submit = false, // true or false 
8                const char *dataType="sim", // "sim" or "real" etc.
9                const char *pluginRunMode="full", // "test" or "full" or "terminate"
10                const char *det = "EMCAL") // "PHOS" or "EMCAL"
11 {
12   TStopwatch timer;
13   timer.Start();
14   gSystem->Load("libTree");
15   gSystem->Load("libGeom");
16   gSystem->Load("libVMC");
17   gSystem->Load("libPhysics");
18
19   gSystem->Load("libMinuit");
20
21   gSystem->AddIncludePath("-I$ALICE_ROOT/include");
22   gSystem->AddIncludePath("-I. -I$ALICE_ROOT/EMCAL -I$ALICE_ROOT/ANALYSIS");
23
24   gSystem->Load("libSTEERBase");
25   gSystem->Load("libESD");
26   gSystem->Load("libAOD");
27   
28   gSystem->Load("libANALYSIS");
29   gSystem->Load("libANALYSISalice");
30   gSystem->Load("libCORRFW");
31
32   if (!submit) { 
33     cout << "local - no submitting" << endl;
34   }
35   else { 
36     cout << "submitting to grid" << endl;
37   }
38    
39   gROOT->ProcessLine(".L AliAnalysisEtCuts.cxx+g");
40   gROOT->ProcessLine(".L AliAnalysisHadEtCorrections.cxx+g");
41   gROOT->ProcessLine(".L AliAnalysisEtCommon.cxx+g");
42   gROOT->ProcessLine(".L AliAnalysisEt.cxx+g");
43   gROOT->ProcessLine(".L AliAnalysisEtMonteCarlo.cxx+g");
44   gROOT->ProcessLine(".L AliAnalysisEtMonteCarloPhos.cxx+g");
45   gROOT->ProcessLine(".L AliAnalysisEtMonteCarloEmcal.cxx+g");
46   gROOT->ProcessLine(".L AliAnalysisEtReconstructed.cxx+g");
47   gROOT->ProcessLine(".L AliAnalysisEtReconstructedPhos.cxx+g");
48   gROOT->ProcessLine(".L AliAnalysisEtReconstructedEmcal.cxx+g");  
49   gROOT->ProcessLine(".L AliAnalysisEtSelectionContainer.cxx+g");
50   gROOT->ProcessLine(".L AliAnalysisEtSelectionHandler.cxx+g");
51   gROOT->ProcessLine(".L AliAnalysisTaskTransverseEnergy.cxx+g");
52   gROOT->ProcessLine(".L AliAnalysisTaskTotEt.cxx+g");
53
54    gInterpreter->GenerateDictionary("std::map<int, AliPhysicsSelection*>", "AliPhysicsSelection.h;map")  ;
55    gInterpreter->GenerateDictionary("std::pair<int, AliPhysicsSelection*>", "AliPhysicsSelection.h;utility");
56
57
58   char *kTreeName = "esdTree" ;
59   TChain * chain   = new TChain(kTreeName,"myESDTree") ;
60   
61   if(submit){      
62     gSystem->Load("libNetx") ; 
63     gSystem->Load("libgapiUI");
64     gSystem->Load("libRAliEn"); 
65     TGrid::Connect("alien://") ;
66   }
67   
68   // Make the analysis manager
69   AliAnalysisManager *mgr = new AliAnalysisManager("TotEtManager");
70   
71   TString detStr(det);
72   TString taskName = "TaskTotEt" + detStr;
73   TString dataStr(dataType);
74   TString dataStrName(dataType);
75   dataStrName.ReplaceAll("/",".");
76   TString outputName = "Et.ESD." + dataStrName + "." + detStr + ".root";
77   TString outputDir = "totEt" + dataStr;
78
79   cout << " taskName " << taskName
80        << " outputName " << outputName 
81        << " outputDir (alien) " << outputDir << endl;
82
83   if (submit) {
84     gROOT->LoadMacro("CreateAlienHandlerCaloEtSim.C");
85     AliAnalysisGrid *alienHandler = CreateAlienHandlerCaloEtSim(outputDir, outputName, pluginRunMode);  
86     if (!alienHandler) return;
87     mgr->SetGridHandler(alienHandler);
88   }
89
90   AliVEventHandler* esdH = new AliESDInputHandler;
91   mgr->SetInputEventHandler(esdH);
92   AliMCEventHandler* handler = new AliMCEventHandler;
93   Bool_t isMc = kTRUE;
94   Bool_t isPb = kFALSE;
95   if ( dataStr.Contains("PbPb") ) { isPb = kTRUE;}
96   if ( dataStr.Contains("sim") ) {
97     cout << " MC " << endl;
98     if ( dataStr.Contains("PbPb") ) { // a la: simPbPb/LHC10e18a
99       cout << " PbPb " << endl;
100       TString fileLocation = "/home/dsilverm/data/E_T/" + dataStr + "/dir/AliESDs.root";
101       cout << "fileLocation " << fileLocation.Data() << endl; 
102       chain->Add(fileLocation.Data()); // link to local test file
103     }
104     else { // pp
105       chain->Add("/data/LHC10d15/1821/AliESDs.root");
106       //chain->Add("/data/LHC10dpass2/10000126403050.70/AliESDs.root");//data
107       //chain->Add("/home/dsilverm/data/E_T/sim/LHC10d1/117222/100/AliESDs.root"); // link to local test file
108     }
109     handler->SetReadTR(kFALSE);
110     mgr->SetMCtruthEventHandler(handler);
111   }
112   else { // real data
113     isMc = kFALSE;
114     chain->Add("/home/dsilverm/data/E_T/data/2010/LHC10b/000117222/ESDs/pass2/10000117222021.30/AliESDs.root"); // link to local test file
115     cout << " not MC " << endl;
116   }
117
118   gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
119   
120   AliPhysicsSelectionTask *physicsSelectionTask = AddTaskPhysicsSelection(isMc);//isMC is true when processing monte carlo
121
122   if(isPb){      
123     gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
124     gROOT->ProcessLine(".L AliCentralitySelectionTask.cxx++g");
125     AliCentralitySelectionTask *centTask = AddTaskCentrality();
126   }
127
128   AliAnalysisTaskTotEt *task1 = new AliAnalysisTaskTotEt(taskName);
129   task1->SetMcData(isMc);//necessary to tell the task to basically accept all MC events.
130   mgr->AddTask(task1);
131
132   AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
133   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("out1", TList::Class(), AliAnalysisManager::kOutputContainer, outputName);
134   
135   //____________________________________________//
136   mgr->ConnectInput(task1,0,cinput1);
137   mgr->ConnectOutput(task1,1,coutput1);
138   
139   mgr->SetDebugLevel(0);
140   
141   if (!mgr->InitAnalysis()) return;
142   mgr->PrintStatus();
143   if(submit){
144     mgr->StartAnalysis("grid");
145   }
146   else{
147     mgr->StartAnalysis("local",chain);
148   }
149   
150   timer.Stop();
151   timer.Print();
152 }