]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AddTaskSingleMuonAnalysis.C
adding new sample component for RAW data analysis
[u/mrichter/AliRoot.git] / PWG3 / muon / AddTaskSingleMuonAnalysis.C
1 AliAnalysisTaskSingleMu *AddTaskSingleMuonAnalysis(Int_t fillNtupleScaleDown=0, 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 baseOutName = "singleMuonAnalysis.root";
22    TString outputfile = mgr->GetCommonFileName();
23    if ( ! outputfile.IsNull() ) outputfile += ":PWG3_muon_SingleMu";
24    else outputfile = baseOutName;
25
26    AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("SingleMuonContainer",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
27    AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("SingleMuon",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
28    AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("SingleMuonMC",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
29    AliAnalysisDataContainer *coutput4 = mgr->CreateContainer("SingleMuonQA",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
30
31    AliAnalysisDataContainer *coutput5 = 0x0;    
32    if ( fillNtupleScaleDown > 0 ) {
33      coutput5 = mgr->CreateContainer("SingleMuonNtuple",TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile);
34      coutput5->SetSpecialOutput();
35    }
36
37
38    // Create the task, add it to the manager and configure it.
39    //===========================================================================   
40
41    AliAnalysisTaskSingleMu *SingleMuonAnalysisTask = new AliAnalysisTaskSingleMu("SingleMuonAnalysisTask", fillNtupleScaleDown, keepAll);
42    mgr->AddTask(SingleMuonAnalysisTask);
43    
44    // Create ONLY the output containers for the data produced by the task.
45    // Get and connect other common input/output containers via the manager as below
46    //==============================================================================
47    
48    mgr->ConnectInput  (SingleMuonAnalysisTask,  0, mgr->GetCommonInputContainer());
49    mgr->ConnectOutput (SingleMuonAnalysisTask,  1, coutput1);
50    mgr->ConnectOutput (SingleMuonAnalysisTask,  2, coutput2);
51    mgr->ConnectOutput (SingleMuonAnalysisTask,  3, coutput3);
52    mgr->ConnectOutput (SingleMuonAnalysisTask,  4, coutput4);
53
54    if ( fillNtupleScaleDown > 0 )     
55      mgr->ConnectOutput (SingleMuonAnalysisTask,  5, coutput5);
56
57    return SingleMuonAnalysisTask;
58 }