Coding conventions
[u/mrichter/AliRoot.git] / PWG3 / muondep / AddTaskMuonResolution.C
1 AliAnalysisTaskMuonResolution *AddTaskMuonResolution(Bool_t selectPhysics = kFALSE, Bool_t selectTrigger = kFALSE,
2                                                      Bool_t matchTrig = kTRUE, Bool_t applyAccCut = kTRUE,
3                                                      Double_t minMomentum = 0., Bool_t correctForSystematics = kTRUE,
4                                                      Int_t extrapMode = 1)
5 {
6   /// Add AliAnalysisTaskMuonResolution to the train (Philippe Pillot)
7   
8   
9   // Get the pointer to the existing analysis manager via the static access method.
10   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
11   if(!mgr) { 
12     Error("AddTaskMuonResolution","AliAnalysisManager not set!");
13     return NULL;
14   }
15   
16   // This task run on ESDs
17   TString type = mgr->GetInputEventHandler()->GetDataType();
18   if (!type.Contains("ESD")) {
19     Error("AddTaskMuonResolution", "ESD input handler needed!");
20     return NULL;
21   }
22   
23   // Create and configure task
24   AliAnalysisTaskMuonResolution *task = new AliAnalysisTaskMuonResolution("MuonResolution");
25   if (!task) {
26     Error("AddTaskMuonResolution", "Muon resolution task cannot be created!");
27     return NULL;
28   }
29   task->SelectPhysics(selectPhysics);
30   task->SelectTrigger(selectTrigger);
31 //  task->SelectTrigger(selectTrigger, AliVEvent::kMB);
32   task->MatchTrigger(matchTrig);
33   task->ApplyAccCut(applyAccCut);
34   task->SetMinMomentum(minMomentum);
35   task->CorrectForSystematics(correctForSystematics);
36   task->SetExtrapMode(extrapMode);
37   
38   // Add task to analysis manager
39   mgr->AddTask(task);
40   
41   // Connect input container
42   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
43   
44   // Define output file directory
45   TString outputfile = AliAnalysisManager::GetCommonFileName();
46   if ( outputfile.IsNull() ) {
47     Error("AddTaskMuonResolution", "Common output file is not defined!");
48     return NULL;
49   }
50   outputfile += ":MUON_Resolution";
51   
52   // Create and connect output containers
53   AliAnalysisDataContainer *cout_histo1 = mgr->CreateContainer("Residuals", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
54   AliAnalysisDataContainer *cout_histo2 = mgr->CreateContainer("ResidualsVsP", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
55   AliAnalysisDataContainer *cout_histo3 = mgr->CreateContainer("ResidualsVsCent", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
56   AliAnalysisDataContainer *cout_histo4 = mgr->CreateContainer("LocalChi2", TObjArray::Class(), AliAnalysisManager::kParamContainer, outputfile);
57   AliAnalysisDataContainer *cout_histo5 = mgr->CreateContainer("ChamberRes", TObjArray::Class(), AliAnalysisManager::kParamContainer, outputfile);
58   AliAnalysisDataContainer *cout_histo6 = mgr->CreateContainer("TrackRes", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
59   mgr->ConnectOutput(task, 1, cout_histo1);
60   mgr->ConnectOutput(task, 2, cout_histo2);
61   mgr->ConnectOutput(task, 3, cout_histo3);
62   mgr->ConnectOutput(task, 4, cout_histo4);
63   mgr->ConnectOutput(task, 5, cout_histo5);
64   mgr->ConnectOutput(task, 6, cout_histo6);
65   
66   return task;
67 }