New histograms to study the correlated loss of efficiency: updating macro (Philippe P.)
[u/mrichter/AliRoot.git] / PWG3 / muondep / AddTaskMUONTrackingEfficiency.C
1 AliAnalysisTaskMuonTrackingEff *AddTaskMUONTrackingEfficiency(Bool_t matchTrig = kTRUE, Bool_t applyAccCut = kTRUE) 
2 {
3   //
4   // Task for the determination of the MUON tracking chamber efficiency
5   //
6   // lenhardt@subatech.in2p3.fr
7   // lardeux@subatech.in2p3.fr
8   //
9   
10   // Get the pointer to the existing analysis manager via the static access method
11   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
12   if (!mgr) {
13     ::Error("AddTaskMUONTrackingEfficiency", "No analysis manager to connect to.");
14     return NULL;
15   }   
16   
17   // This task run on ESDs
18   TString type = mgr->GetInputEventHandler()->GetDataType();
19   if (!type.Contains("ESD")) {
20     ::Error("AddTaskMUONTrackingEfficiency", "ESD input handler needed!");
21     return NULL;
22   }
23   
24   // Define output file directory
25   TString fileName = AliAnalysisManager::GetCommonFileName();
26   if (fileName.IsNull()) {
27     ::Error("AddTaskMUONTrackingEfficiency", "Common output file is not defined!");
28     return NULL;
29   }
30   fileName += ":MUON_Efficiency";
31   
32   
33   // Create and configure task
34   AliAnalysisTaskMuonTrackingEff* taskMuonTrackingEff = new AliAnalysisTaskMuonTrackingEff("MuonTrackingEfficiency");
35   taskMuonTrackingEff->MatchTrigger(matchTrig);
36   taskMuonTrackingEff->ApplyAccCut(applyAccCut);
37   
38   // Add to the manager
39   mgr->AddTask(taskMuonTrackingEff);
40   
41   // Connect input container
42   mgr->ConnectInput (taskMuonTrackingEff, 0, mgr->GetCommonInputContainer());
43   
44   // Create and connect output containers
45   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("TracksDetectedPerDE", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
46   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("TotalTracksPerDE", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
47   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("SingleDetectedPerDE", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
48   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("TracksDetectedPerChamber", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
49   AliAnalysisDataContainer *coutput5 = mgr->CreateContainer("TotalTracksPerChamber", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
50   AliAnalysisDataContainer *coutput6 = mgr->CreateContainer("SingleDetectedPerChamber", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
51   AliAnalysisDataContainer *coutput7 = mgr->CreateContainer("ExtraHistos", TList::Class(),AliAnalysisManager::kOutputContainer,  fileName);
52   mgr->ConnectOutput(taskMuonTrackingEff, 1, coutput1);
53   mgr->ConnectOutput(taskMuonTrackingEff, 2, coutput2);
54   mgr->ConnectOutput(taskMuonTrackingEff, 3, coutput3);
55   mgr->ConnectOutput(taskMuonTrackingEff, 4, coutput4);
56   mgr->ConnectOutput(taskMuonTrackingEff, 5, coutput5);
57   mgr->ConnectOutput(taskMuonTrackingEff, 6, coutput6);
58   mgr->ConnectOutput(taskMuonTrackingEff, 7, coutput7);
59   
60   return taskMuonTrackingEff;
61 }
62