1 void Load(const char* taskName, Bool_t debug)
3 TString compileTaskName;
4 compileTaskName.Form("%s.cxx++", taskName);
6 compileTaskName += "g";
9 gProof->Load(compileTaskName);
11 gROOT->Macro(compileTaskName);
13 // Enable debug printouts
16 AliLog::SetClassDebugLevel(taskName, AliLog::kDebug+2);
19 AliLog::SetClassDebugLevel(taskName, AliLog::kWarning);
22 void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Int_t requiredData = 1, const char* option = "", const char* requireClass = "", const char* rejectClass = "")
24 // runWhat options: 0 = AlidNdEtaTask
25 // 1 = AlidNdEtaCorrectionTask
28 // aProof option: 0 no proof
30 // 2 proof with dataset
32 // requiredData option: 0 = only ESD
34 // 2 = RAW (ESD+check on event type)
36 // option is passed to the task(s)
37 // option SAVE is removed and results in moving the output files to maps/<ds name>/<trigger>/<det>
41 if (runWhat == 0 || runWhat == 2)
43 Printf("Running AlidNdEtaTask");
45 if (runWhat == 1 || runWhat == 2)
47 Printf("Running AlidNdEtaCorrectionTask");
48 if (requiredData != 1)
50 Printf("AlidNdEtaCorrectionTask needs MC. Exiting...");
60 TProof::Mgr("alicecaf")->SetROOTVersion("v5-24-00a");
61 TProof::Open("alicecaf");
62 //gProof->SetParallel(2);
63 //gProof->SetParameter("PROOF_Packetizer", "TPacketizer");
65 Bool_t fullAliroot = kFALSE;
66 // Enable the needed package
69 gProof->UploadPackage("$ALICE_ROOT/STEERBase");
70 gProof->EnablePackage("$ALICE_ROOT/STEERBase");
71 gProof->UploadPackage("$ALICE_ROOT/ESD");
72 gProof->EnablePackage("$ALICE_ROOT/ESD");
73 gProof->UploadPackage("$ALICE_ROOT/AOD");
74 gProof->EnablePackage("$ALICE_ROOT/AOD");
75 gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
76 gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
77 gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
78 gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
80 else if (!fullAliroot)
82 gProof->UploadPackage("$ALICE_ROOT/AF-v4-18-12-AN.par");
83 gProof->EnablePackage("AF-v4-18-12-AN");
87 // needed if ITS recpoints are accessed, see AlidNdEtaTask, FULLALIROOT define statement
88 gProof->UploadPackage("$ALICE_ROOT/v4-18-12-AN-all.par");
89 gProof->EnablePackage("v4-18-12-AN-all");
91 gProof->Exec("TGrid::Connect(\"alien://\")", kTRUE);
93 // TODO add this to loadlibs.C
94 gProof->Exec("gSystem->Load(\"libXMLParser\")", kTRUE);
97 gProof->UploadPackage("$ALICE_ROOT/PWG0base");
98 gProof->EnablePackage("$ALICE_ROOT/PWG0base");
102 gSystem->AddIncludePath("-I${ALICE_ROOT}/include/ -I${ALICE_ROOT}/PWG0/ -I${ALICE_ROOT}/PWG0/dNdEta/");
103 gSystem->Load("libVMC");
104 gSystem->Load("libTree");
105 gSystem->Load("libProof");
106 gSystem->Load("libSTEERBase");
107 gSystem->Load("libESD");
108 gSystem->Load("libAOD");
109 gSystem->Load("libANALYSIS");
110 gSystem->Load("libANALYSISalice");
111 gSystem->Load("libPWG0base");
114 // Create the analysis manager
115 mgr = new AliAnalysisManager;
120 AliESDInputHandler* esdH = new AliESDInputHandlerRP; // for RecPoints
122 AliESDInputHandler* esdH = new AliESDInputHandlerRP;
124 esdH->SetInactiveBranches("AliESDACORDE FMD AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks Kinks Cascades ALIESDACORDE MuonTracks TrdTracks CaloClusters");
125 mgr->SetInputEventHandler(esdH);
127 AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn;
128 AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kSPDGFOBits | AliTriggerAnalysis::kOfflineFlag; // AcceptAll;
130 AliPWG0Helper::PrintConf(analysisMode, trigger);
132 AliESDtrackCuts* esdTrackCuts = 0;
133 if (!(analysisMode & AliPWG0Helper::kSPD))
135 // selection of esd tracks
136 gROOT->ProcessLine(".L ../CreateStandardCuts.C");
137 esdTrackCuts = CreateTrackCuts(analysisMode);
140 printf("ERROR: esdTrackCuts could not be created\n");
143 esdTrackCuts->SetHistogramsOn(kTRUE);
146 cInput = mgr->GetCommonInputContainer();
148 // remove SAVE option if set
149 Bool_t save = kFALSE;
150 TString optStr(option);
151 if (optStr.Contains("SAVE"))
153 optStr = optStr(0,optStr.Index("SAVE")) + optStr(optStr.Index("SAVE")+4, optStr.Length());
158 if (runWhat == 0 || runWhat == 2)
160 Load("AlidNdEtaTask", aDebug);
161 task = new AlidNdEtaTask(optStr);
163 if (requiredData == 1)
167 //task->SetUseMCVertex();
168 //task->SetUseMCKine();
169 //task->SetOnlyPrimaries();
170 //task->SetFillPhi();
171 //task->SetSymmetrize();
173 task->SetTrigger(trigger);
174 task->SetAnalysisMode(analysisMode);
175 task->SetTrackCuts(esdTrackCuts);
176 //task->SetDeltaPhiCut(0.05);
178 if (requiredData == 2)
179 task->SetCheckEventType();
180 task->SetTriggerClasses(requireClass, rejectClass);
185 mgr->ConnectInput(task, 0, cInput);
188 cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
189 mgr->ConnectOutput(task, 0, cOutput);
191 if (runWhat == 1 || runWhat == 2)
193 Load("AlidNdEtaCorrectionTask", aDebug);
194 task2 = new AlidNdEtaCorrectionTask(optStr);
197 //task2->SetFillPhi();
198 //task2->SetOnlyPrimaries();
199 //task2->SetSymmetrize();
201 task2->SetTrigger(trigger);
202 task2->SetAnalysisMode(analysisMode);
203 task2->SetTrackCuts(esdTrackCuts);
204 //task2->SetDeltaPhiCut(0.05);
209 mgr->ConnectInput(task2, 0, cInput);
212 cOutput = mgr->CreateContainer("cOutput2", TList::Class(), AliAnalysisManager::kOutputContainer);
213 mgr->ConnectOutput(task2, 0, cOutput);
216 if (requiredData == 1) {
217 // Enable MC event handler
218 AliMCEventHandler* handler = new AliMCEventHandler;
219 handler->SetReadTR(kFALSE);
220 mgr->SetMCtruthEventHandler(handler);
223 // Enable debug printouts
225 mgr->SetDebugLevel(2);
235 mgr->StartAnalysis("proof", data, nRuns, offset);
239 TString path("maps/");
240 path += TString(data).Tokenize("/")->Last()->GetName();
242 UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) AliTriggerAnalysis::kStartOfFlags;
243 switch (triggerNoFlags)
245 case AliTriggerAnalysis::kMB1: path += "/mb1"; break;
246 case AliTriggerAnalysis::kMB2: path += "/mb2"; break;
247 case AliTriggerAnalysis::kMB3: path += "/mb3"; break;
248 case AliTriggerAnalysis::kSPDGFO: path += "/spdgfo"; break;
249 case AliTriggerAnalysis::kSPDGFOBits: path += "/spdgfobits"; break;
250 default: Printf("ERROR: Trigger undefined for path to files"); return;
253 if (strlen(requireClass) > 0 && strlen(rejectClass) == 0)
255 path += Form("/%s", requireClass);
257 else if (strlen(rejectClass) > 0)
258 path += Form("/%s--%s", requireClass, rejectClass);
260 if (analysisMode & AliPWG0Helper::kSPD)
263 if (analysisMode & AliPWG0Helper::kTPC)
266 gSystem->mkdir(path, kTRUE);
267 if (runWhat == 0 || runWhat == 2)
269 gSystem->Rename("analysis_esd_raw.root", path + "/analysis_esd_raw.root");
270 if (requiredData == 1)
271 gSystem->Rename("analysis_mc.root", path + "/analysis_mc.root");
273 if (runWhat == 1 || runWhat == 2)
275 gSystem->Rename("correction_map.root", path + "/correction_map.root");
278 Printf(">>>>> Moved files to %s", path.Data());
281 else if (aProof == 3)
283 gROOT->ProcessLine(".L CreateChainFromDataSet.C");
284 ds = gProof->GetDataSet(data)->GetStagedSubset();
285 chain = CreateChainFromDataSet(ds);
286 mgr->StartAnalysis("local", chain, nRuns, offset);
290 // Create chain of input files
291 gROOT->LoadMacro("../CreateESDChain.C");
293 chain = CreateESDChain(data, nRuns, offset);
294 //chain = CreateChain("TE", data, nRuns, offset);
296 mgr->StartAnalysis((aProof > 0) ? "proof" : "local", chain);