Fixing violations to the coding convention rules of ALICE (Philipe P.)
[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->MatchTrigger(matchTrig);
32   task->ApplyAccCut(applyAccCut);
33   task->SetMinMomentum(minMomentum);
34   task->CorrectForSystematics(correctForSystematics);
35   task->SetExtrapMode(extrapMode);
36   
37   // Add task to analysis manager
38   mgr->AddTask(task);
39   
40   // Connect input container
41   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
42   
43   // Define output file directory
44   TString outputfile = AliAnalysisManager::GetCommonFileName();
45   if ( outputfile.IsNull() ) {
46     Error("AddTaskMuonResolution", "Common output file is not defined!");
47     return NULL;
48   }
49   outputfile += ":MUON_Resolution";
50   
51   // Create and connect output containers
52   AliAnalysisDataContainer *cout_histo1 = mgr->CreateContainer("Residuals", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
53   AliAnalysisDataContainer *cout_histo2 = mgr->CreateContainer("ResidualsVsP", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
54   AliAnalysisDataContainer *cout_histo3 = mgr->CreateContainer("LocalChi2", TObjArray::Class(), AliAnalysisManager::kParamContainer, outputfile);
55   AliAnalysisDataContainer *cout_histo4 = mgr->CreateContainer("ChamberRes", TObjArray::Class(), AliAnalysisManager::kParamContainer, outputfile);
56   AliAnalysisDataContainer *cout_histo5 = mgr->CreateContainer("TrackRes", TObjArray::Class(), AliAnalysisManager::kOutputContainer, outputfile);
57   mgr->ConnectOutput(task, 1, cout_histo1);
58   mgr->ConnectOutput(task, 2, cout_histo2);
59   mgr->ConnectOutput(task, 3, cout_histo3);
60   mgr->ConnectOutput(task, 4, cout_histo4);
61   mgr->ConnectOutput(task, 5, cout_histo5);
62   
63   return task;
64 }