1 //Create by Christine Nattrass, Rebecca Scott, Irakli Martashvili
2 //University of Tennessee at Knoxville
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="real", // "sim" or "real" etc.
9 const char *pluginRunMode="test", // "test" or "full" or "terminate"
10 const char *det = "EMCalDetail") // "PHOS" or "EMCAL"
14 gSystem->Load("libTree");
15 gSystem->Load("libGeom");
16 gSystem->Load("libVMC");
17 gSystem->Load("libPhysics");
19 gSystem->Load("libMinuit");
21 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
22 gSystem->AddIncludePath("-I. -I$ALICE_ROOT/EMCAL -I$ALICE_ROOT/ANALYSIS");
24 gSystem->Load("libSTEERBase");
25 gSystem->Load("libESD");
26 gSystem->Load("libAOD");
28 gSystem->Load("libANALYSIS");
29 gSystem->Load("libANALYSISalice");
30 gSystem->Load("libCORRFW");
35 cout << "local - no submitting" << endl;
38 cout << "submitting to grid" << endl;
41 gROOT->ProcessLine(".L AliAnalysisEtCuts.cxx+g");
42 gROOT->ProcessLine(".L AliAnalysisHadEtCorrections.cxx+g");
43 gROOT->ProcessLine(".L AliAnalysisEtCommon.cxx+g");
44 gROOT->ProcessLine(".L AliAnalysisEt.cxx+g");
45 gROOT->ProcessLine(".L AliAnalysisEtMonteCarlo.cxx+g");
46 gROOT->ProcessLine(".L AliAnalysisEtMonteCarloPhos.cxx+g");
47 gROOT->ProcessLine(".L AliAnalysisEtMonteCarloEmcal.cxx+g");
48 gROOT->ProcessLine(".L AliAnalysisEtReconstructed.cxx+g");
49 gROOT->ProcessLine(".L AliAnalysisEtReconstructedPhos.cxx+g");
50 gROOT->ProcessLine(".L AliAnalysisEtReconstructedEmcal.cxx+g");
51 gROOT->ProcessLine(".L AliAnalysisEtSelectionContainer.cxx+g");
52 gROOT->ProcessLine(".L AliAnalysisEtSelectionHandler.cxx+g");
53 gROOT->ProcessLine(".L AliAnalysisTaskTransverseEnergy.cxx+g");
54 gROOT->ProcessLine(".L AliAnalysisEmEtMonteCarlo.cxx+g");
55 gROOT->ProcessLine(".L AliAnalysisEmEtReconstructed.cxx+g");
56 gROOT->ProcessLine(".L AliAnalysisTaskTotEt.cxx+g");
58 gInterpreter->GenerateDictionary("std::map<int, AliPhysicsSelection*>", "AliPhysicsSelection.h;map") ;
59 gInterpreter->GenerateDictionary("std::pair<int, AliPhysicsSelection*>", "AliPhysicsSelection.h;utility");
61 char *kTreeName = "esdTree" ;
62 TChain * chain = new TChain(kTreeName,"myESDTree") ;
65 gSystem->Load("libNetx") ;
66 gSystem->Load("libgapiUI");
67 gSystem->Load("libRAliEn");
68 TGrid::Connect("alien://") ;
71 // Make the analysis manager
72 AliAnalysisManager *mgr = new AliAnalysisManager("TotEtManager");
75 TString taskName = "TaskTotEt" + detStr;
76 TString dataStr(dataType);
77 TString dataStrName(dataType);
78 dataStrName.ReplaceAll("/",".");
79 TString outputName = "Et.ESD." + dataStrName + "." + detStr + ".root";
80 TString outputDir = "totEt" + dataStr;
82 cout << " taskName " << taskName
83 << " outputName " << outputName
84 << " outputDir (alien) " << outputDir << endl;
87 gROOT->LoadMacro("CreateAlienHandlerCaloEtSim.C");
88 AliAnalysisGrid *alienHandler = CreateAlienHandlerCaloEtSim(outputDir, outputName, pluginRunMode);
89 if (!alienHandler) return;
90 mgr->SetGridHandler(alienHandler);
93 AliVEventHandler* esdH = new AliESDInputHandler;
94 mgr->SetInputEventHandler(esdH);
95 AliMCEventHandler* handler = new AliMCEventHandler;
98 if ( dataStr.Contains("PbPb") ) { isPb = kTRUE;}
99 if ( dataStr.Contains("sim") ) {
100 cout << " MC " << endl;
101 if ( dataStr.Contains("PbPb") ) { // a la: simPbPb/LHC10e18a
102 cout << " PbPb " << endl;
103 TString fileLocation = "/home/dsilverm/data/E_T/" + dataStr + "/dir/AliESDs.root";
104 cout << "fileLocation " << fileLocation.Data() << endl;
105 chain->Add(fileLocation.Data()); // link to local test file
108 cout<<"adding pp simulation file"<<endl;
109 chain->Add("/data/LHC10d15/1821/AliESDs.root");
110 //chain->Add("/data/LHC10dpass2/10000126403050.70/AliESDs.root");//data
111 //chain->Add("/home/dsilverm/data/E_T/sim/LHC10d1/117222/100/AliESDs.root"); // link to local test file
113 handler->SetReadTR(kFALSE);
114 mgr->SetMCtruthEventHandler(handler);
118 chain->Add("/data/LHC10dpass2/10000126403050.70/AliESDs.root");//data
119 //chain->Add("/home/dsilverm/data/E_T/data/2010/LHC10b/000117222/ESDs/pass2/10000117222021.30/AliESDs.root"); // link to local test file
120 cout << " not MC " << endl;
124 if(!isMc && detStr.Contains("EMC")){
125 cout<<"You are running over EMCal data and using the tender supply"<<endl;
126 gSystem->Load("libTENDER.so");
127 gSystem->Load("libTENDERSupplies.so");
128 gROOT->ProcessLine(".include $ALICE_ROOT/Tender/");
129 gSystem->AddIncludePath("-I$ALICE_ROOT/ANALYSIS ");
131 gROOT->LoadMacro("CreateEMCALTender.C");
132 AliAnalysisTaskSE *tender = CreateEMCALTender(kTRUE);
133 mgr->AddTask(tender);
136 if(isMc) cout<<"I am a MC"<<endl;
137 gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
139 AliPhysicsSelectionTask *physicsSelectionTask = AddTaskPhysicsSelection(isMc);//isMC is true when processing monte carlo
141 cout<<"Adding centrality selection task"<<endl;
142 gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
143 gROOT->ProcessLine(".L AliCentralitySelectionTask.cxx++g");
144 AliCentralitySelectionTask *centTask = AddTaskCentrality();
149 AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
155 AliAnalysisTaskTotEt *task1 = new AliAnalysisTaskTotEt(taskName);
156 task1->SetMcData(isMc);//necessary to tell the task to basically accept all MC events.
159 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("out1", TList::Class(), AliAnalysisManager::kOutputContainer, outputName);
161 //____________________________________________//
162 mgr->ConnectInput(task1,0,cinput1);
163 mgr->ConnectOutput(task1,1,coutput1);
167 mgr->SetDebugLevel(0);
169 if (!mgr->InitAnalysis()) return;
172 mgr->StartAnalysis("grid");
175 mgr->StartAnalysis("local",chain);