]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AddTaskMuonQA.C
Cleanup the code. Fix memory leak. Now inherit from AliAnalysisTaskSE (Antoine, Phili...
[u/mrichter/AliRoot.git] / PWG3 / muon / AddTaskMuonQA.C
1 AliAnalysisTaskMuonQA *AddTaskMuonQA(Bool_t selectPhysics = kFALSE, Bool_t selectTrigger = kFALSE,
2                                      Bool_t selectMatched = kFALSE, Bool_t applyAccCut = kFALSE, Short_t selectCharge = 0)
3 {
4   /// Add AliAnalysisTaskMuonQA to the train (Philippe Pillot)
5   
6   
7   // Get the pointer to the existing analysis manager via the static access method.
8   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
9   if(!mgr) { 
10     Error("AddTaskMuonQA","AliAnalysisManager not set!");
11     return NULL;
12   }
13   
14   // This task run on ESDs
15   TString type = mgr->GetInputEventHandler()->GetDataType();
16   if (!type.Contains("ESD")) {
17     Error("AddTaskMuonQA", "ESD input handler needed!");
18     return NULL;
19   }
20   
21   // Create and configure task
22   AliAnalysisTaskMuonQA *task = new AliAnalysisTaskMuonQA("MuonQA");
23   if (!task) {
24     Error("AddTaskMuonQA", "Muon QA task cannot be created!");
25     return NULL;
26   }
27   task->SelectPhysics(selectPhysics);
28   task->SelectTrigger(selectTrigger);
29   task->SelectMatched(selectMatched);
30   task->ApplyAccCut(applyAccCut);
31   task->SelectCharge(selectCharge);
32   
33   // Add task to analysis manager
34   mgr->AddTask(task);
35   
36   // Connect input container
37   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
38   
39   // Define output file directory
40   TString outputfile = AliAnalysisManager::GetCommonFileName();
41   if ( outputfile.IsNull() ) {
42     Error("AddTaskMuonQA", "Common output file is not defined!");
43     return NULL;
44   }
45   outputfile += ":MUON_QA";
46   
47   // Create and connect output containers
48   AliAnalysisDataContainer *cout_histo1 = mgr->CreateContainer("general1", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
49   AliAnalysisDataContainer *cout_histo2 = mgr->CreateContainer("expert", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
50   AliAnalysisDataContainer *cout_trackStat = mgr->CreateContainer("trackCounters", AliCounterCollection::Class(), AliAnalysisManager::kOutputContainer, outputfile);
51   AliAnalysisDataContainer *cout_eventStat = mgr->CreateContainer("eventCounters", AliCounterCollection::Class(), AliAnalysisManager::kOutputContainer, outputfile);
52   AliAnalysisDataContainer *cout_normalized = mgr->CreateContainer("general2", TObjArray::Class(), AliAnalysisManager::kParamContainer, outputfile);
53   mgr->ConnectOutput(task, 1, cout_histo1);
54   mgr->ConnectOutput(task, 2, cout_histo2);
55   mgr->ConnectOutput(task, 3, cout_trackStat);
56   mgr->ConnectOutput(task, 4, cout_eventStat);
57   mgr->ConnectOutput(task, 5, cout_normalized);
58   
59   return task;
60 }