Fixing a bug in the computation of the errors (Matthieu)
[u/mrichter/AliRoot.git] / PWG3 / muondep / MuonTrackingEffAnalysis.C
1 // 2008
2 // Macro for the running of the AliAnalysisTaskMuonTrackingEff
3 //
4
5 // ROOT includes
6 #include <TROOT.h>
7 #include <TSystem.h>
8 #include <TChain.h>
9 #include <TFile.h>
10 #include <TClonesArray.h>
11
12 // PWG3 includes
13 #include "AliAnalysisTaskMuonTrackingEff.h"
14
15 // ANALYSIS includes
16 #include "AliAnalysisManager.h"
17 #include "AliAnalysisDataContainer.h"
18
19 // STEER includes
20 #include "AliESDInputHandler.h"
21 #include "AliCDBManager.h"
22
23 // MUON includes
24 #include "AliMUONGeometryTransformer.h"
25
26
27
28 void MuonTrackingEffAnalysis(const Bool_t alien = false, const Int_t run = 100, const char * fileName = "AliESDs.root", const char * geometryFileName = "geometry.root", Bool_t isCosmicData = kFALSE)
29 {
30 //Chain construction
31     TChain *chain = new TChain("esdTree");
32     chain->Add(fileName);
33
34
35     // Name of the output file
36     const Char_t* outputName = "MuonTrackingChamberEffHistos.root";
37
38 //Load OCD
39     AliCDBManager* man = AliCDBManager::Instance();
40     TString ocdbPath;
41     if(alien)
42     {
43       ocdbPath = "alien://folder=/alice/data/2008/LHC08a/OCDB";
44     }
45     else
46     {
47       ocdbPath = "local://$ALICE_ROOT/OCDB";
48     }
49
50     man->SetDefaultStorage(ocdbPath.Data());
51     man->SetSpecificStorage("MUON/Calib/Mapping",ocdbPath);
52     man->SetRun(run);
53  
54 //Load Geometry
55     AliMUONGeometryTransformer* transformer = new AliMUONGeometryTransformer();
56     transformer->LoadGeometryData(geometryFileName);
57
58
59 //Make analysis manager:
60     AliAnalysisManager* mgr = new AliAnalysisManager("Manager", "Manager");  
61     AliAnalysisTaskMuonTrackingEffComplete* ESDTask = new AliAnalysisTaskMuonTrackingEffComplete("ESDTask", transformer, isCosmicData);
62     AliESDInputHandler* inHandler = new AliESDInputHandler();
63
64     mgr->SetInputEventHandler  (inHandler );
65 //     mgr->SetDebugLevel(10);
66     mgr->AddTask(ESDTask);
67
68 //Create containers for input/output
69     AliAnalysisDataContainer* cinput0  =        mgr->GetCommonInputContainer();
70     AliAnalysisDataContainer *coutput0 =
71         mgr->CreateContainer("TracksDetectedPerDE", TClonesArray::Class(),AliAnalysisManager::kOutputContainer, outputName);
72     AliAnalysisDataContainer *coutput1 =
73         mgr->CreateContainer("TotalTracksPerDE", TClonesArray::Class(),AliAnalysisManager::kOutputContainer, outputName);
74     AliAnalysisDataContainer *coutput2 =
75         mgr->CreateContainer("EfficiencyPerDE", TClonesArray::Class(),AliAnalysisManager::kOutputContainer, outputName);
76     AliAnalysisDataContainer *coutput3 =
77         mgr->CreateContainer("TracksDetectedPerChamber", TClonesArray::Class(),AliAnalysisManager::kOutputContainer, outputName);
78     AliAnalysisDataContainer *coutput4 =
79         mgr->CreateContainer("TotalTracksPerChamber", TClonesArray::Class(),AliAnalysisManager::kOutputContainer, outputName);
80     AliAnalysisDataContainer *coutput5 =
81         mgr->CreateContainer("EfficiencyPerChamber", TClonesArray::Class(),AliAnalysisManager::kOutputContainer, outputName);
82
83 //Connection
84     mgr->ConnectInput (ESDTask, 0, cinput0 );
85
86     mgr->ConnectOutput(ESDTask, 0, coutput0);
87     mgr->ConnectOutput(ESDTask, 1, coutput1);
88     mgr->ConnectOutput(ESDTask, 2, coutput2);
89     mgr->ConnectOutput(ESDTask, 3, coutput3);
90     mgr->ConnectOutput(ESDTask, 4, coutput4);
91     mgr->ConnectOutput(ESDTask, 5, coutput5);
92   
93 //Run analysis
94     if(mgr->InitAnalysis())
95     {
96       //mgr->PrintStatus();
97       mgr->StartAnalysis("Local", chain);
98     }
99