1 void runProtonAnalysis(const char* esdAnalysisType = "TPC",) {
2 //Macro to run the proton analysis tested for local, proof & GRID.
3 //Local: Takes three arguments, the analysis mode, the type of the ESD
4 // analysis and the path where the tag and ESD or AOD files reside.
5 //Interactive: Takes three arguments, the analysis mode, the type of the ESD
6 // analysis and the name of the collection of tag files.
7 //Batch: Takes three arguments, the analysis mode, the type of the ESD
8 // analysis and the name of the collection file with the event list
10 //Proof: Takes four arguments, the analysis mode, the number of events,
11 // the dataset name and the analysis type in case of ESD.
13 //Analysis mode can be: "MC", "ESD", "AOD"
14 //ESD analysis type can be one of the three: "TPC", "Hybrid", "Global"
18 //runLocal("ESD",esdAnalysisType,"/home/pchrist/ALICE/Alien/Tutorial/November2007/Tags");
19 //runInteractive("ESD",esdAnalysisType,"tag.xml");
20 //runBatch("ESD",esdAnalysisType,"wn.xml");
23 "/COMMON/COMMON/LHC08c11_10TeV_0.5T",
30 //_________________________________________________//
31 void runLocal(const char* mode = "ESD",
32 const char* analysisType = 0x0,
33 const char* path = "/home/pchrist/ALICE/Alien/Tutorial/November2007/Tags") {
38 TString outputFilename = "Protons."; outputFilename += mode;
40 outputFilename += "."; outputFilename += analysisType;
42 outputFilename += ".root";
44 //____________________________________________________//
45 //_____________Setting up the par files_______________//
46 //____________________________________________________//
47 setupPar("STEERBase");
48 gSystem->Load("libSTEERBase.so");
50 gSystem->Load("libVMC.so");
51 gSystem->Load("libESD.so");
53 gSystem->Load("libAOD.so");
55 gSystem->Load("libANALYSIS.so");
56 setupPar("ANALYSISalice");
57 gSystem->Load("libANALYSISalice.so");
58 setupPar->UploadPackage("CORRFW.par");
59 gSystem->EnablePackage("CORRFW");
60 setupPar("PWG2spectra");
61 gSystem->Load("libPWG2spectra.so");
62 //____________________________________________________//
64 //____________________________________________//
65 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
66 tagAnalysis->ChainLocalTags(path);
68 AliRunTagCuts *runCuts = new AliRunTagCuts();
69 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
70 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
71 AliEventTagCuts *evCuts = new AliEventTagCuts();
74 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
75 chain->SetBranchStatus("*Calo*",0);
77 //____________________________________________//
78 gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
79 //____________________________________________//
80 // Make the analysis manager
81 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
82 AliVEventHandler* esdH = new AliESDInputHandler;
83 mgr->SetInputEventHandler(esdH);
85 AliMCEventHandler *mc = new AliMCEventHandler();
86 mgr->SetMCtruthEventHandler(mc);
89 //____________________________________________//
91 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
92 taskProtons->SetType(mode);
93 taskProtons->SetTriggerMode(AliAnalysisTaskProtons::kMB2);
94 switch(analysisType) {
96 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kTPC);
99 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kHybrid);
102 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kGlobal);
107 taskProtons->SetAcceptedVertexDiamond(5.,5.,15.);
108 //Momentum dependent priors
109 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
110 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
111 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
112 TF1 *fitPions = (TF1 *)f->Get("fitPions");
113 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
114 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
115 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
120 mgr->AddTask(taskProtons);
122 // Create containers for input/output
123 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
125 AliAnalysisManager::kInputContainer);
126 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
128 AliAnalysisManager::kOutputCont
129 outputFilename.Data());
131 //____________________________________________//
132 mgr->ConnectInput(taskProtons,0,cinput1);
133 mgr->ConnectOutput(taskProtons,0,coutput1);
134 if (!mgr->InitAnalysis()) return;
136 mgr->StartAnalysis("local",chain);
142 //_________________________________________________//
143 void runInteractive(const char* mode = "ESD",
144 const char* analysisType = 0x0,
145 const char* collectionName = "tag.xml") {
148 gSystem->Load("libProofPlayer.so");
150 TString smode = mode;
151 TString outputFilename = "Protons."; outputFilename += mode;
153 outputFilename += "."; outputFilename += analysisType;
155 outputFilename += ".root";
157 printf("*** Connect to AliEn ***\n");
158 TGrid::Connect("alien://");
160 //____________________________________________________//
161 //_____________Setting up the par files_______________//
162 //____________________________________________________//
163 setupPar("STEERBase");
164 gSystem->Load("libSTEERBase.so");
166 gSystem->Load("libVMC.so");
167 gSystem->Load("libESD.so");
169 gSystem->Load("libAOD.so");
170 setupPar("ANALYSIS");
171 gSystem->Load("libANALYSIS.so");
172 setupPar("ANALYSISalice");
173 gSystem->Load("libANALYSISalice.so");
174 setupPar->UploadPackage("CORRFW.par");
175 gSystem->EnablePackage("CORRFW");
176 setupPar("PWG2spectra");
177 gSystem->Load("libPWG2spectra.so");
178 //____________________________________________________//
180 //____________________________________________//
181 AliTagAnalysis *tagAnalysis = new AliTagAnalysis("ESD");
183 AliRunTagCuts *runCuts = new AliRunTagCuts();
184 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
185 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
186 AliEventTagCuts *evCuts = new AliEventTagCuts();
189 TAlienCollection* coll = TAlienCollection::Open(collectionName);
190 TGridResult* TagResult = coll->GetGridResult("",0,0);
191 tagAnalysis->ChainGridTags(TagResult);
193 chain = tagAnalysis->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
194 chain->SetBranchStatus("*Calo*",0);
196 //____________________________________________//
197 gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
198 //____________________________________________//
199 // Make the analysis manager
200 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
201 AliVEventHandler* esdH = new AliESDInputHandler;
202 mgr->SetInputEventHandler(esdH);
204 AliMCEventHandler *mc = new AliMCEventHandler();
205 mgr->SetMCtruthEventHandler(mc);
208 //____________________________________________//
210 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
211 taskProtons->SetType(mode);
212 taskProtons->SetTriggerMode(AliAnalysisTaskProtons::kMB2);
213 switch(analysisType) {
215 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kTPC);
218 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kHybrid);
221 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kGlobal);
226 taskProtons->SetAcceptedVertexDiamond(5.,5.,15.);
227 //Momentum dependent priors
228 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
229 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
230 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
231 TF1 *fitPions = (TF1 *)f->Get("fitPions");
232 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
233 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
234 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
239 mgr->AddTask(taskProtons);
241 // Create containers for input/output
242 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
244 AliAnalysisManager::kInputContainer);
245 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
247 AliAnalysisManager::kOutputCont
248 outputFilename.Data());
250 //____________________________________________//
251 mgr->ConnectInput(taskProtons,0,cinput1);
252 mgr->ConnectOutput(taskProtons,0,coutput1);
253 if (!mgr->InitAnalysis()) return;
255 mgr->StartAnalysis("local",chain);
261 //_________________________________________________//
262 void runBatch(const char* mode = "ESD",
263 const char* analysisType = 0x0,
264 const char *collectionfile = "wn.xml") {
268 TString smode = mode;
269 TString outputFilename = "Protons."; outputFilename += mode;
271 outputFilename += "."; outputFilename += analysisType;
273 outputFilename += ".root";
275 printf("*** Connect to AliEn ***\n");
276 TGrid::Connect("alien://");
277 gSystem->Load("libProofPlayer.so");
279 //____________________________________________________//
280 //_____________Setting up the par files_______________//
281 //____________________________________________________//
282 setupPar("STEERBase");
283 gSystem->Load("libSTEERBase.so");
285 gSystem->Load("libVMC.so");
286 gSystem->Load("libESD.so");
288 gSystem->Load("libAOD.so");
289 setupPar("ANALYSIS");
290 gSystem->Load("libANALYSIS.so");
291 setupPar("ANALYSISalice");
292 gSystem->Load("libANALYSISalice.so");
293 setupPar->UploadPackage("CORRFW.par");
294 gSystem->EnablePackage("CORRFW");
295 setupPar("PWG2spectra");
296 gSystem->Load("libPWG2spectra.so");
297 //____________________________________________________//
299 //____________________________________________//
300 //Usage of event tags
301 AliTagAnalysis *tagAnalysis = new AliTagAnalysis();
303 chain = tagAnalysis->GetChainFromCollection(collectionfile,"esdTree");
304 chain->SetBranchStatus("*Calo*",0);
306 //____________________________________________//
307 gROOT->LoadMacro("AliAnalysisTaskProtons.cxx++");
308 //____________________________________________//
309 // Make the analysis manager
310 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
311 AliVEventHandler* esdH = new AliESDInputHandler;
312 mgr->SetInputEventHandler(esdH);
314 AliMCEventHandler *mc = new AliMCEventHandler();
315 mgr->SetMCtruthEventHandler(mc);
318 //____________________________________________//
320 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
321 taskProtons->SetType(mode);
322 taskProtons->SetTriggerMode(AliAnalysisTaskProtons::kMB2);
323 switch(analysisType) {
325 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kTPC);
328 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kHybrid);
331 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kGlobal);
336 taskProtons->SetAcceptedVertexDiamond(5.,5.,15.);
337 //Momentum dependent priors
338 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
339 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
340 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
341 TF1 *fitPions = (TF1 *)f->Get("fitPions");
342 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
343 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
344 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
349 mgr->AddTask(taskProtons);
351 // Create containers for input/output
352 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
353 TChain::Class(),AliAnalysisManager::kInputContainer);
354 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
355 TList::Class(),AliAnalysisManager::kOutputCont
356 outputFilename.Data());
358 //____________________________________________//
359 mgr->ConnectInput(taskProtons,0,cinput1);
360 mgr->ConnectOutput(taskProtons,0,coutput1);
361 if (!mgr->InitAnalysis()) return;
363 mgr->StartAnalysis("grid",chain);
369 //_________________________________________________//
370 void runProof(const char* mode = "ESD",
372 const char* dataset = 0x0,
373 const char* analysisType = 0x0) {
377 TString smode = mode;
378 TString outputFilename = "Protons."; outputFilename += mode;
380 outputFilename += "."; outputFilename += analysisType;
382 outputFilename += ".root";
384 printf("****** Connect to PROOF *******\n");
385 TProof::Open("alicecaf.cern.ch");
386 gProof->SetParallel();
388 // Enable the Analysis Package
389 gProof->UploadPackage("STEERBase.par");
390 gProof->EnablePackage("STEERBase");
391 gProof->UploadPackage("ESD.par");
392 gProof->EnablePackage("ESD");
393 gProof->UploadPackage("AOD.par");
394 gProof->EnablePackage("AOD");
395 gProof->UploadPackage("ANALYSIS.par");
396 gProof->EnablePackage("ANALYSIS");
397 gProof->UploadPackage("ANALYSISalice.par");
398 gProof->EnablePackage("ANALYSISalice");
399 gProof->UploadPackage("CORRFW.par");
400 gProof->EnablePackage("CORRFW");
401 gProof->UploadPackage("PWG2spectra.par");
402 gProof->EnablePackage("PWG2spectra");
404 //____________________________________________//
405 gProof->Load("AliAnalysisTaskProtons.cxx++");
406 //____________________________________________//
408 //____________________________________________//
409 // Make the analysis manager
410 AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
411 AliVEventHandler* esdH = new AliESDInputHandler;
412 mgr->SetInputEventHandler(esdH);
414 AliMCEventHandler *mc = new AliMCEventHandler();
415 mgr->SetMCtruthEventHandler(mc);
417 //____________________________________________//
419 AliAnalysisTaskProtons *taskProtons = new AliAnalysisTaskProtons("TaskProtons");
420 taskProtons->SetType(mode);
421 taskProtons->SetTriggerMode(AliAnalysisTaskProtons::kMB2);
422 switch(analysisType) {
424 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kTPC);
427 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kHybrid);
430 taskProtons->SetAnalysisMode(AliAnalysisTaskProtons::kGlobal);
435 taskProtons->SetAcceptedVertexDiamond(5.,5.,15.);
436 //Momentum dependent priors
437 /*TFile *f = TFile::Open("PriorProb/PriorProbabilities.root ");
438 TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
439 TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
440 TF1 *fitPions = (TF1 *)f->Get("fitPions");
441 TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
442 TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
443 taskProtons->SetPriorProbabilityFunctions(fitElectrons,
448 mgr->AddTask(taskProtons);
450 // Create containers for input/output
451 AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("dataChain",
453 AliAnalysisManager::kInputContainer);
454 AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("outputList1",
456 AliAnalysisManager::kOutputContainer,
457 outputFilename.Data());
459 //____________________________________________//
460 mgr->ConnectInput(taskProtons,0,cinput1);
461 mgr->ConnectOutput(taskProtons,0,coutput1);
462 if (!mgr->InitAnalysis()) return;
466 mgr->StartAnalysis("proof",dataset,stats);
468 // You should get this macro and the txt file from:
469 // http://aliceinfo.cern.ch/Offline/Analysis/CAF/
470 gROOT->LoadMacro("CreateESDChain.C");
472 chain = CreateESDChain("ESD82XX_30K.txt",stats);
473 chain->SetBranchStatus("*Calo*",0);
475 mgr->StartAnalysis("proof",chain);
482 //_________________________________________________//
483 Int_t setupPar(const char* pararchivename) {
487 if (pararchivename) {
488 char processline[1024];
489 sprintf(processline,".! tar xvzf %s.par",pararchivename);
490 gROOT->ProcessLine(processline);
491 const char* ocwd = gSystem->WorkingDirectory();
492 gSystem->ChangeDirectory(pararchivename);
494 // check for BUILD.sh and execute
495 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
496 printf("*******************************\n");
497 printf("*** Building PAR archive ***\n");
498 printf("*******************************\n");
500 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
501 Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
505 // check for SETUP.C and execute
506 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
507 printf("*******************************\n");
508 printf("*** Setup PAR archive ***\n");
509 printf("*******************************\n");
510 gROOT->Macro("PROOF-INF/SETUP.C");
513 gSystem->ChangeDirectory("../");