New structure of PWG3: PWG3base, PWG3muon, PWG3vertexingHF and PWG3vertexingOld ...
[u/mrichter/AliRoot.git] / PWG3 / muon / RunSingleMuonAnalysisFromAOD.C
1 //--------------------------------------------------------------------------
2 // Base macro for submitting single muon analysis.
3 // 
4 // In case it is not run with full aliroot, it needs to have in the working directory:
5 //  - STEERBase.par
6 //  - AOD.par
7 //  - ANALYSIS.par
8 // 
9 // The macro reads AODs and outputs file:
10 // - outputDir/singleMuAnalysis.root
11 //--------------------------------------------------------------------------
12
13 void runSingleMuAnalysis(Char_t *inputDir=".", Char_t *outputDir=".") {
14   TStopwatch timer;
15   timer.Start();
16   gSystem->Load("libTree");
17   gSystem->Load("libGeom");
18   gSystem->Load("libVMC");
19   gSystem->Load("libANALYSIS");
20   gSystem->Load("libSTEERBase");
21   gSystem->Load("libAOD");
22   gSystem->Load("libESD");  
23   gSystem->Load("libPWG3base.so");
24
25   TString outFileName("singleMuAnalysis.root");
26   outFileName.Prepend(Form("%s/",outputDir));
27
28   //____________________________________________//
29   AliTagAnalysis *TagAna = new AliTagAnalysis("AOD"); 
30
31   AliRunTagCuts *runCuts = new AliRunTagCuts();
32   AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
33   AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
34   AliEventTagCuts *evCuts = new AliEventTagCuts();
35
36   TagAna->ChainLocalTags(inputDir);
37   
38
39   // Temporary workaround to avoid problems with AOD tags.
40   TChain* chain = new TChain("aodTree");
41   TString inFileName("AliAOD.root");
42   inFileName.Prepend(Form("%s/",inputDir));
43   chain->Add(inFileName);
44   // When problems will be solved and/or you manage in getting a
45   // Run*.Merged.AOD.tag.root, substitute with the following lines:
46
47   //TChain* chain = 0x0;
48   //chain = TagAna->QueryTags(runCuts,lhcCuts,detCuts,evCuts);
49
50
51   //____________________________________________//
52   // Make the analysis manager
53   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
54   AliVEventHandler* aodH = new AliAODInputHandler;
55   mgr->SetInputEventHandler(aodH);
56   //____________________________________________//
57   // 1st Pt task
58   AliAnalysisTaskSingleMu *task1 = new AliAnalysisTaskSingleMu("SingleMu");
59   mgr->AddTask(task1);
60   // Create containers for input/output
61   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain1",TChain::Class(),AliAnalysisManager::kInputContainer);
62   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("cobjArray1", TObjArray::Class(),AliAnalysisManager::kOutputContainer,outFileName.Data());
63   
64   //____________________________________________//
65   mgr->ConnectInput(task1,0,cinput1);
66   mgr->ConnectOutput(task1,0,coutput1);
67   if (!mgr->InitAnalysis()) return;
68   mgr->PrintStatus();
69   mgr->StartAnalysis("local",chain);
70
71   timer.Stop();
72   timer.Print();
73 }