]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/muon/AddTaskSingleMuonAnalysis.C
Fixes for merging in proof. Cleanup of the output container. Leave the choice of...
[u/mrichter/AliRoot.git] / PWG3 / muon / AddTaskSingleMuonAnalysis.C
index ae2f89017dcb42d422a434d98f873ddad4748516..7b660fa52d22e49626e0f8e733ce89fefe4cb9c6 100644 (file)
@@ -1,4 +1,19 @@
-AliAnalysisTaskSingleMu *AddTaskSingleMuonAnalysis(Int_t fillNtupleScaleDown=0, Bool_t keepAll=kFALSE){
+#if !defined(__CINT__) || defined(__MAKECINT__)
+#include "TString.h"
+#include "TList.h"
+
+#include "AliLog.h"
+#include "AliVEventHandler.h"
+
+#include "AliAnalysisManager.h"
+#include "AliAnalysisDataContainer.h"
+
+#include "AliCFContainer.h"
+
+#include "AliAnalysisTaskSingleMu.h"
+#endif
+
+AliAnalysisTaskSingleMu* AddTaskSingleMuonAnalysis(Bool_t applyPhysicsSelection=kTRUE, Int_t fillNtupleScaleDown=0, Bool_t keepAll=kFALSE){
 
    // Get the pointer to the existing analysis manager via the static access method.
    //==============================================================================
@@ -18,45 +33,54 @@ AliAnalysisTaskSingleMu *AddTaskSingleMuonAnalysis(Int_t fillNtupleScaleDown=0,
      return NULL;
    }
 
-   TString baseOutName = "singleMuonAnalysis.root";
+   TString currName = "";
    TString outputfile = mgr->GetCommonFileName();
-   if ( ! outputfile.IsNull() ) outputfile += ":PWG3_muon_SingleMu";
-   else outputfile = baseOutName;
+   if ( ! outputfile.IsNull() ) {
+     currName = ( applyPhysicsSelection ) ? ":PWG3_muon_SingleMu" : ":PWG3_muon_SingleMu_NoPS";
+     outputfile += currName;
+   }
+   else outputfile = "singleMuonAnalysis.root";
+
+   currName = ( applyPhysicsSelection ) ? "SingleMuonContainer" : "SingleMuonContainerNoPS";
+   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(currName.Data(),AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,outputfile);
 
-   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);
+   currName = ( applyPhysicsSelection ) ? "SingleMuon" : "SingleMuonNoPS";
+   AliAnalysisDataContainer *coutput2 = mgr->CreateContainer(currName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
 
+   currName = ( applyPhysicsSelection ) ? "SingleMuonQA" : "SingleMuonQANoPS";
+   AliAnalysisDataContainer *coutput3 = mgr->CreateContainer(currName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
 
-   AliAnalysisDataContainer *coutput5 = 0x0;    
+   currName = ( applyPhysicsSelection ) ? "SingleMuonMC" : "SingleMuonMCNoPS";
+   AliAnalysisDataContainer *coutput4 = mgr->CreateContainer(currName.Data(),TList::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+
+   AliAnalysisDataContainer *coutput5 = 0x0;
    if ( fillNtupleScaleDown > 0 ) {
-     coutput5 = mgr->CreateContainer("SingleMuonNtuple",TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+     currName = ( applyPhysicsSelection ) ? "SingleMuonNtuple" : "SingleMuonNtupleNoPS";
+     coutput5 = mgr->CreateContainer(currName.Data(),TTree::Class(),AliAnalysisManager::kOutputContainer,outputfile);
+     //coutput5 = mgr->CreateContainer(currName.Data(),TTree::Class(),AliAnalysisManager::kOutputContainer,"SingleMuNtuple.root");
      coutput5->SetSpecialOutput();
    }
 
 
    // Create the task, add it to the manager and configure it.
    //===========================================================================   
-
-   AliAnalysisTaskSingleMu *SingleMuonAnalysisTask = new AliAnalysisTaskSingleMu("SingleMuonAnalysisTask", fillNtupleScaleDown, keepAll);
-   mgr->AddTask(SingleMuonAnalysisTask);
+   AliAnalysisTaskSingleMu *singleMuonAnalysisTask = new AliAnalysisTaskSingleMu("SingleMuonAnalysisTask", fillNtupleScaleDown, keepAll);
+   mgr->AddTask(singleMuonAnalysisTask);
+   if ( applyPhysicsSelection ) 
+     singleMuonAnalysisTask->SelectCollisionCandidates(AliVEvent::kMB | AliVEvent::kMUON);
    
    // 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);
+   mgr->ConnectInput  (singleMuonAnalysisTask,  0, mgr->GetCommonInputContainer());
+   mgr->ConnectOutput (singleMuonAnalysisTask,  1, coutput1);
+   mgr->ConnectOutput (singleMuonAnalysisTask,  2, coutput2);
+   mgr->ConnectOutput (singleMuonAnalysisTask,  3, coutput3);
+   mgr->ConnectOutput (singleMuonAnalysisTask,  4, coutput4);
 
    if ( coutput5 )
-     mgr->ConnectOutput (SingleMuonAnalysisTask,  5, coutput5);
+     mgr->ConnectOutput (singleMuonAnalysisTask,  5, coutput5);
 
-   return SingleMuonAnalysisTask;
-}   
+   return singleMuonAnalysisTask;
+}