1 // Macro to run AliDhcTask - A. Adare, Apr 2011
2 // Choose dataType = "esd" or "aod".
3 // Choose runMode = "local", "proof", "grid", or "terminate".
4 // Choose proofCluster = "skaf.saske.sk" or "alice-caf.cern.ch".
5 // When running on proof: use root, not aliroot.
8 Long64_t nEvents = 200;
9 TString runMode = "local";
10 TString dataType = "aod";
11 TString localDir = "/Users/adare/esd/alice/data/2010/LHC10h/000139107/ESDs/pass2/";
12 TString esdDir = localDir + TString("10000139107001.120/");
13 TString aodDir = localDir + TString("AOD049/0008/");
14 TString proofDataset = "/alice/data/LHC10h_000137848_p2_AOD049";
15 //TString proofCluster = "aadare@alice-caf.cern.ch";
16 TString proofCluster = "aadare@skaf.saske.sk";
17 TString alirootVer = "VO_ALICE@AliRoot::v4-21-21-AN";
18 TString libsBase = "Tree:Geom:VMC:STEERBase:ESD:AOD";
19 //TString libsExtra = "ANALYSIS:ANALYSISalice:CORRFW:JETAN:PWG4JetTasks";
20 TString libsExtra = "ANALYSIS:ANALYSISalice";
21 TList* libList = new TList();
26 // Creates the large file memstat_<pid>.root.
27 // Call TMemStat::Show() on the promp to analyze it.
29 TMemStat mm("gnubuiltin");
33 else if (runMode=="proof") {
39 /// --- All set up now...run Analysis! ---
40 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
41 if (!mgr->InitAnalysis())
46 if (runMode=="local") {
47 mgr->StartAnalysis(runMode.Data(), chain, nEvents);
49 else if (runMode=="proof") {
50 mgr->StartAnalysis(runMode.Data(), proofDataset.Data(), nEvents);
58 TObjArray* libs = libsExtra.Tokenize(":");
59 for (Int_t i=0; i<libs->GetEntries(); i++) {
60 const char* name = libs->At(i)->GetName();
61 Int_t ret = gSystem->Load(Form("lib%s", name));
63 Warning("LocalSetup()", "lib%s already loaded", name);
65 Warning("LocalSetup()", "lib%s failed to load", name);
69 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
72 if (dataType == "esd") {
73 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
75 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
76 gROOT->LoadMacro("KiddiePoolClasses.cxx+g");
77 gROOT->LoadMacro("AliDhcTask.cxx+g");
80 TString chainName = dataType.Contains("aod") ? "aodTree" : "esdTree";
81 chain = new TChain(chainName.Data());
82 if (dataType.Contains("aod"))
83 chain->Add(Form("%sAliAOD.root", aodDir.Data()));
84 if (dataType.Contains("esd"))
85 chain->Add(Form("%sAliESDs.root", esdDir.Data()));
91 gEnv->SetValue("XSec.GSI.DelegProxy", "2");
94 TProof *proof = gProof;
96 TProof::Reset(proofCluster.Data()); // add kTRUE as a 2nd arg for hard reset
98 cerr << "Trying to reset proof" << endl;
100 proof = TProof::Open(proofCluster.Data(), "workers=60");
103 cerr << "Connection to " << proofCluster.Data()
104 << " failed!" << endl;
109 proof->ShowPackages();
110 proof->ShowDataSets();
115 libList->Add(new TNamed("ALIROOT_EXTRA_LIBS", libsBase.Data()));
116 libList->Add(new TNamed("ALIROOT_EXTRA_LIBS", libsExtra.Data()));
118 ret = proof->EnablePackage(alirootVer.Data(), libList);
120 proof->EnablePackage(alirootVer.Data(), 0);
122 Error("ProofSetup()", "Failed to load all libs.");
127 if (dataType == "esd") {
128 proof->Load("AddTaskCentrality.C");
130 proof->Load("AddTaskPhysicsSelection.C");
131 proof->Load("KiddiePoolClasses.cxx+g");
132 proof->Load("AliDhcTask.cxx+g", 0);
138 // Need the following macros loaded beforehand:
139 // "$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C" (ESD only)
140 // "$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"
141 // "AliDhcTask.cxx+g"
143 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
145 mgr = new AliAnalysisManager("DhcAnalysis");
146 AliESDInputHandler* esdH = new AliESDInputHandler();
147 AliAODInputHandler* aodH = new AliAODInputHandler();
149 if (dataType.Contains("aod"))
150 mgr->SetInputEventHandler(aodH);
151 if (dataType.Contains("esd"))
152 mgr->SetInputEventHandler(esdH);
154 if (dataType == "esd") {
155 AliCentralitySelectionTask *centTask = AddTaskCentrality();
156 centTask->SelectCollisionCandidates(AliVEvent::kAny);
157 centTask->SetPass(2);
160 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
162 AliDhcTask *dhcTask = new AliDhcTask("DhcTask");
163 dhcTask->SelectCollisionCandidates(AliVEvent::kMB);
164 dhcTask->SetVerbosity(verbosity);
167 mgr->AddTask(dhcTask);
169 // Create containers for input/output
170 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
171 AliAnalysisDataContainer *coutput =
172 mgr->CreateContainer("dhclist", TList::Class(),
173 AliAnalysisManager::kOutputContainer,
174 "dhctask_output.root");
176 // Connect input/output
177 mgr->ConnectInput(dhcTask, 0, cinput);
178 mgr->ConnectOutput(dhcTask, 1, coutput);
180 // Enable debug printouts
181 mgr->SetDebugLevel(verbosity);