]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AddTaskSingleMuonAnalysis.C
655f2500022d5c680172d8b7f12de36d83609637
[u/mrichter/AliRoot.git] / PWG3 / muon / AddTaskSingleMuonAnalysis.C
1 AliAnalysisTaskSingleMu *AddTaskSingleMuonAnalysis(Bool_t fillNtuple=kFALSE, Bool_t keepAll=kFALSE){
2
3    // Get the pointer to the existing analysis manager via the static access method.
4    //==============================================================================
5    
6    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
7    if (!mgr) {
8       ::Error("AddtaskSingleMuonAnalysis", "No analysis manager to connect to.");
9       return NULL;
10    }   
11
12    // This task requires an ESD or AOD output handler.
13    // Check this using the analysis manager.
14    //===============================================================================
15    TString type = mgr->GetInputEventHandler()->GetDataType();
16    if (!type.Contains("ESD") && !type.Contains("AOD")) {
17      ::Error("AddtaskSingleMuonAnalysis", "SingleMuon task needs the manager to have an ESD or AOD input handler.");
18      return NULL;
19    }
20
21    TString outputfile = AliAnalysisManager::GetCommonFileName();
22    outputfile += ":PWG3Muon_SingleMuon";
23
24    AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("SingleMuon",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
25    AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("SingleMuonMC",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
26    AliAnalysisDataContainer *coutput3 = 0x0; 
27    
28    if ( fillNtuple ) {
29      coutput3 = mgr->CreateContainer("SingleMuonNtuple",TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile);
30      coutput3->SetSpecialOutput();
31    }
32
33
34    // Create the task, add it to the manager and configure it.
35    //===========================================================================   
36
37    AliAnalysisTaskSingleMu *SingleMuonAnalysisTask = new AliAnalysisTaskSingleMu("Single Muon Analysis Task", fillNtuple, keepAll);
38    mgr->AddTask(SingleMuonAnalysisTask);
39    
40    // Create ONLY the output containers for the data produced by the task.
41    // Get and connect other common input/output containers via the manager as below
42    //==============================================================================
43    
44    mgr->ConnectInput  (SingleMuonAnalysisTask,  0, mgr->GetCommonInputContainer());
45    mgr->ConnectOutput (SingleMuonAnalysisTask,  1, coutput1);
46    mgr->ConnectOutput (SingleMuonAnalysisTask,  2, coutput2);
47
48    if ( fillNtuple )     
49      mgr->ConnectOutput (SingleMuonAnalysisTask,  3, coutput3);
50
51    return SingleMuonAnalysisTask;
52 }