MUON task for the analysis train to fill the muon information in the generic AODs...
[u/mrichter/AliRoot.git] / PWG3 / RunESDMuonFilter.C
1 // Macro to run AliAnalysisTaskESDMuonFilter
2 //
3
4 void RunESDMuonFilter(char* filein = "AliESDs.root", char* fileout = "AliMuonAOD.root" ){
5      
6     gSystem->Load("libTree.so"); 
7     gSystem->Load("libGeom.so");
8     gSystem->Load("libVMC.so");
9     gSystem->Load("libPhysics");
10     
11     // for analysis .par file based
12     
13     setupPar("STEERBase");
14     setupPar("ESD");
15     setupPar("AOD");
16     setupPar("ANALYSIS");
17     setupPar("ANALYSISalice");
18     setupPar("PWG3base");
19     
20     // Input ESD file
21     TChain* chain = new TChain("esdTree");  
22     chain->Add(filein);
23     AliESDInputHandler* esdHandler = new AliESDInputHandler();
24
25     // Make aod output handler
26     AliAODHandler* aodHandler = new AliAODHandler();
27     aodHandler->SetOutputFileName(fileout);
28     
29     // Make the analysis manager
30     AliAnalysisManager *mgr  = new AliAnalysisManager("Muon AOD Manager", "Muon AOD Manager");
31     mgr->SetInputEventHandler(esdHandler);
32     mgr->SetOutputEventHandler(aodHandler);
33     mgr-> SetDebugLevel(10);
34     
35     // Task for MUON AOD generation 
36     AliAnalysisTaskESDMuonFilter *esdfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
37     mgr->AddTask(esdfilter);
38   
39     // Create containers for input/output
40     AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cESD",TChain::Class(), 
41                                                              AliAnalysisManager::kInputContainer);
42     AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("cAOD", TTree::Class(),
43                                                               AliAnalysisManager::kOutputContainer, "default");
44
45     mgr->ConnectInput  (esdfilter,  0, cinput1  );
46     mgr->ConnectOutput (esdfilter,  0, coutput1 );
47     
48     // Run the analysis    
49     mgr->InitAnalysis();
50     mgr->PrintStatus();
51     mgr->StartAnalysis("local",chain);
52 }
53
54
55 Int_t setupPar(const char* pararchivename) {
56   ///////////////////
57   // Setup PAR File//
58   ///////////////////
59   if (pararchivename) {
60     char processline[1024];
61     sprintf(processline,".! tar xvzf %s.par",pararchivename);
62     gROOT->ProcessLine(processline);
63     const char* ocwd = gSystem->WorkingDirectory();
64     gSystem->ChangeDirectory(pararchivename);
65
66     // check for BUILD.sh and execute
67     if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
68       printf("*******************************\n");
69       printf("*** Building PAR archive    ***\n");
70       printf("*******************************\n");
71
72       if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
73         Error("runAnalysis","Cannot Build the PAR Archive! - Abort!");
74         return -1;
75       }
76     }
77     // check for SETUP.C and execute
78     if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
79       printf("*******************************\n");
80       printf("*** Setup PAR archive       ***\n");
81       printf("*******************************\n");
82       gROOT->Macro("PROOF-INF/SETUP.C");
83     }
84
85     gSystem->ChangeDirectory("../");
86   }
87
88   return 1;
89 }