]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/muon/AddTaskSingleMuonAnalysis.C
load XML configuration file into object (Lars Christian)
[u/mrichter/AliRoot.git] / PWG3 / muon / AddTaskSingleMuonAnalysis.C
index 7fb071afdf48abe1c42710eb2096c2b057ecff5b..ae2f89017dcb42d422a434d98f873ddad4748516 100644 (file)
@@ -1,42 +1,62 @@
-AliAnalysisTaskSingleMu *AddTaskSingleMuonAnalysis(){
+AliAnalysisTaskSingleMu *AddTaskSingleMuonAnalysis(Int_t fillNtupleScaleDown=0, Bool_t keepAll=kFALSE){
 
    // Get the pointer to the existing analysis manager via the static access method.
    //==============================================================================
+   
    AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
    if (!mgr) {
       ::Error("AddtaskSingleMuonAnalysis", "No analysis manager to connect to.");
       return NULL;
    }   
-   
+
+   // This task requires an ESD or AOD output handler.
    // Check this using the analysis manager.
    //===============================================================================
    TString type = mgr->GetInputEventHandler()->GetDataType();
-   if (!type.Contains("ESD")) {
-      ::Error("AddTaskSingleMuonAnalysis", "ESD filtering task needs the manager to have an ESD input handler.");
-      return NULL;
-   }   
+   if (!type.Contains("ESD") && !type.Contains("AOD")) {
+     ::Error("AddtaskSingleMuonAnalysis", "SingleMuon task needs the manager to have an ESD or AOD input handler.");
+     return NULL;
+   }
 
-//    // Check if MC handler is connected in case kine filter requested
+   TString baseOutName = "singleMuonAnalysis.root";
+   TString outputfile = mgr->GetCommonFileName();
+   if ( ! outputfile.IsNull() ) outputfile += ":PWG3_muon_SingleMu";
+   else outputfile = baseOutName;
 
-    AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
-    if (!mcH) {
-       ::Error("AddTaskSingleMuonAnalysis", "No MC handler connected");
-       return NULL;
-    }  
+   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("SingleMuonContainer",AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("SingleMuon",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("SingleMuonQA",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+   AliAnalysisDataContainer *coutput4 = 0x0;
+   if ( mgr->GetMCtruthEventHandler() )
+     coutput4 = mgr->CreateContainer("SingleMuonMC",TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
 
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist0",TList::Class(),AliAnalysisManager::kOutputContainer,"SingleMuonAnalysis.root");
 
-  // Create the task, add it to the manager and configure it.
+   AliAnalysisDataContainer *coutput5 = 0x0;    
+   if ( fillNtupleScaleDown > 0 ) {
+     coutput5 = mgr->CreateContainer("SingleMuonNtuple",TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+     coutput5->SetSpecialOutput();
+   }
+
+
+   // Create the task, add it to the manager and configure it.
    //===========================================================================   
-   // Barrel tracks filter
-   AliAnalysisTaskSingleMu *SingleMuonAnalysisTask = new AliAnalysisTaskSingleMu("Single Muon Analysis Task");
+
+   AliAnalysisTaskSingleMu *SingleMuonAnalysisTask = new AliAnalysisTaskSingleMu("SingleMuonAnalysisTask", fillNtupleScaleDown, keepAll);
    mgr->AddTask(SingleMuonAnalysisTask);
    
    // Create ONLY the output containers for the data produced by the task.
    // Get and connect other common input/output containers via the manager as below
    //==============================================================================
+   
    mgr->ConnectInput  (SingleMuonAnalysisTask,  0, mgr->GetCommonInputContainer());
    mgr->ConnectOutput (SingleMuonAnalysisTask,  1, coutput1);
+   mgr->ConnectOutput (SingleMuonAnalysisTask,  2, coutput2);
+   mgr->ConnectOutput (SingleMuonAnalysisTask,  3, coutput3);
+   if ( coutput4 )
+     mgr->ConnectOutput (SingleMuonAnalysisTask,  4, coutput4);
+
+   if ( coutput5 )
+     mgr->ConnectOutput (SingleMuonAnalysisTask,  5, coutput5);
 
    return SingleMuonAnalysisTask;
 }