1 // Macro to run AliDhcTask - A. Adare, Mar 2012
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 = 123456789;
9 TString runMode = "local"; // "proof";
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@skaf.saske.sk"; // or "aadare@alice-caf.cern.ch";
16 TString alirootVer = "VO_ALICE@AliRoot::v4-21-21-AN"; // for PROOF
17 TString libsBase = "Tree:Geom:VMC:STEERBase:ESD:AOD";
18 TString libsExtra = "ANALYSIS:ANALYSISalice:PWGCFCorrelationsDPhi";
19 TList* libList = new TList();
24 // Creates the large file memstat_<pid>.root.
25 // Call TMemStat::Show() on the promp to analyze it.
27 TMemStat mm("gnubuiltin");
31 else if (runMode=="proof") {
37 /// --- All set up now...run Analysis! ---
38 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
39 if (!mgr->InitAnalysis())
44 if (runMode=="local") {
45 mgr->StartAnalysis(runMode.Data(), chain, nEvents);
47 else if (runMode=="proof") {
48 mgr->StartAnalysis(runMode.Data(), proofDataset.Data(), nEvents);
56 TObjArray* libs = libsExtra.Tokenize(":");
57 for (Int_t i=0; i<libs->GetEntries(); i++) {
58 const char* name = libs->At(i)->GetName();
59 Int_t ret = gSystem->Load(Form("lib%s", name));
61 Warning("LocalSetup()", "lib%s already loaded", name);
63 Warning("LocalSetup()", "lib%s failed to load", name);
67 gSystem->AddIncludePath("-I$ALICE_ROOT/include");
70 if (dataType == "esd") {
71 gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskCentrality.C");
73 gROOT->LoadMacro("$ALICE_ROOT/OADB/macros/AddTaskPhysicsSelection.C");
74 // gROOT->LoadMacro("AliPool.cxx+g");
75 // gROOT->LoadMacro("AliDhcTask.cxx+g");
78 TString chainName = dataType.Contains("aod") ? "aodTree" : "esdTree";
79 chain = new TChain(chainName.Data());
80 if (dataType.Contains("aod"))
81 chain->Add(Form("%sAliAOD.root", aodDir.Data()));
82 if (dataType.Contains("esd"))
83 chain->Add(Form("%sAliESDs.root", esdDir.Data()));
89 gEnv->SetValue("XSec.GSI.DelegProxy", "2");
92 TProof *proof = gProof;
94 TProof::Reset(proofCluster.Data()); // add kTRUE as a 2nd arg for hard reset
96 cerr << "Trying to reset proof" << endl;
98 proof = TProof::Open(proofCluster.Data(), "workers=60");
101 cerr << "Connection to " << proofCluster.Data()
102 << " failed!" << endl;
107 proof->ShowPackages();
108 proof->ShowDataSets();
113 libList->Add(new TNamed("ALIROOT_EXTRA_LIBS", libsBase.Data()));
114 libList->Add(new TNamed("ALIROOT_EXTRA_LIBS", libsExtra.Data()));
116 ret = proof->EnablePackage(alirootVer.Data(), libList);
118 proof->EnablePackage(alirootVer.Data(), 0);
120 Error("ProofSetup()", "Failed to load all libs.");
125 if (dataType == "esd") {
126 proof->Load("AddTaskCentrality.C");
128 proof->Load("AddTaskPhysicsSelection.C");
129 proof->Load("AliPool.cxx+g");
130 proof->Load("AliDhcTask.cxx+g", 0);
136 // Need the following macros loaded beforehand:
137 // "$ALICE_ROOT/OADB/macros/AddTaskCentrality.C" (ESD only)
138 // "$ALICE_ROOT/OADB/macros/AddTaskPhysicsSelection.C"
139 // "AliDhcTask.cxx+g"
141 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
143 mgr = new AliAnalysisManager("DhcAnalysis");
144 AliESDInputHandler* esdH = new AliESDInputHandler();
145 AliAODInputHandler* aodH = new AliAODInputHandler();
147 if (dataType.Contains("aod"))
148 mgr->SetInputEventHandler(aodH);
149 if (dataType.Contains("esd"))
150 mgr->SetInputEventHandler(esdH);
152 if (dataType == "esd") {
153 AliCentralitySelectionTask *centTask = AddTaskCentrality();
154 centTask->SelectCollisionCandidates(AliVEvent::kAny);
155 centTask->SetPass(2);
158 AliPhysicsSelectionTask* physSelTask = AddTaskPhysicsSelection();
160 AliDhcTask *dhcTask = new AliDhcTask("DhcTask");
161 dhcTask->SelectCollisionCandidates(AliVEvent::kMB);
162 dhcTask->SetVerbosity(verbosity);
165 mgr->AddTask(dhcTask);
167 // Create containers for input/output
168 AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
169 AliAnalysisDataContainer *coutput =
170 mgr->CreateContainer("dhclist", TList::Class(),
171 AliAnalysisManager::kOutputContainer,
172 "dhctask_output.root");
174 // Connect input/output
175 mgr->ConnectInput(dhcTask, 0, cinput);
176 mgr->ConnectOutput(dhcTask, 1, coutput);
178 // Enable debug printouts
179 mgr->SetDebugLevel(verbosity);