]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/macros/AddTaskPhysicsSelection.C
Added possibility to redirec the output to special file (to avoid merging on CAF)
[u/mrichter/AliRoot.git] / ANALYSIS / macros / AddTaskPhysicsSelection.C
index ceb4488017af48aaac09f13de745043984fc0478..0bc42dd18c739895d77ba3963b2d598c3be15b08 100644 (file)
@@ -1,4 +1,4 @@
-AliPhysicsSelectionTask* AddTaskPhysicsSelection(Bool_t mCAnalysisFlag = kFALSE, Bool_t withBckgndRejection = kTRUE, UInt_t computeBG = 0
+AliPhysicsSelectionTask* AddTaskPhysicsSelection(Bool_t mCAnalysisFlag = kFALSE, Bool_t deprecatedFlag = kTRUE, UInt_t computeBG = 0, Bool_t useSpecialOutput=kFALSE
 {
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
   if (!mgr) {
@@ -12,30 +12,46 @@ AliPhysicsSelectionTask* AddTaskPhysicsSelection(Bool_t mCAnalysisFlag = kFALSE,
     ::Error("AddTaskPhysicsSelection", "This task requires an input event handler");
     return NULL;
   }
-  TString inputDataType = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+
+  AliVEventHandler *inputHandler=mgr->GetInputEventHandler();
   
+  TString inputDataType = inputHandler->GetDataType(); // can be "ESD" or "AOD"
+
   // Configure analysis
   //===========================================================================
-    
-    
-
-  AliPhysicsSelectionTask *task = new AliPhysicsSelectionTask("");
+  AliPhysicsSelectionTask *task = new AliPhysicsSelectionTask();
+  task->SetUseSpecialOutput(useSpecialOutput); // RS: optionally use special output
+  // this makes physics selection to work using AliMultiInputEventHandler
+  if (inputHandler && (inputHandler->IsA() == AliMultiInputEventHandler::Class())) {
+    AliMultiInputEventHandler *multiInputHandler=(AliMultiInputEventHandler*)inputHandler;
+    AliInputEventHandler *ih = multiInputHandler->GetFirstInputEventHandler();
+    if (!ih) {
+      ::Error("AddTaskPhysicsSelection","ESD or AOD input handler is missing");
+      return NULL;
+    }
+    ih->SetEventSelection(multiInputHandler->GetEventSelection());
+    inputDataType = ih->GetDataType(); // can be "ESD" or "AOD"
+  }
+  
   mgr->AddTask(task);
   
   AliPhysicsSelection* physSel = task->GetPhysicsSelection();
-  if (withBckgndRejection) 
-    physSel->AddBackgroundIdentification(new AliBackgroundSelection());
   if (mCAnalysisFlag)      
     physSel->SetAnalyzeMC();
   if (computeBG)
     physSel->SetComputeBG(computeBG);
 
+  if(!deprecatedFlag) 
+    AliFatal("The BG ID flag is deprecated. Please use the OADB to configure the cuts");
+
   AliAnalysisDataContainer *cinput0 = mgr->GetCommonInputContainer();
   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("cstatsout",
                 TList::Class(),
                 AliAnalysisManager::kOutputContainer,
                 "EventStat_temp.root");
-
+  //           
+  if (useSpecialOutput) coutput1->SetSpecialOutput(); // RS: optionally use special output
+  //
   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(task,1,coutput1);