]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliPhysicsSelectionTask.cxx
Merge branch 'master' into flatdev
[u/mrichter/AliRoot.git] / ANALYSIS / AliPhysicsSelectionTask.cxx
index d82440c27695430e9c707c85b4ff596c29b82945..b89b8e540dfd5ee611166da16c6a6297dbca2353 100644 (file)
@@ -22,6 +22,7 @@ AliPhysicsSelectionTask::AliPhysicsSelectionTask() :
   AliAnalysisTaskSE("AliPhysicsSelectionTask"),
   fOutput(0),
   fOption(""),
+  fUseSpecialOutput(kFALSE),
   fPhysicsSelection(0)
 {
   //
@@ -33,6 +34,7 @@ AliPhysicsSelectionTask::AliPhysicsSelectionTask(const char* opt) :
   AliAnalysisTaskSE("AliPhysicsSelectionTask"),
   fOutput(0),
   fOption(opt),
+  fUseSpecialOutput(kFALSE),
   fPhysicsSelection(new AliPhysicsSelection())
 {
   //
@@ -45,8 +47,15 @@ AliPhysicsSelectionTask::AliPhysicsSelectionTask(const char* opt) :
   } else {
     AliError("No input event handler connected to analysis manager. No Physics Event Selection.");
   }
+  //
+  TString opts = opt;
+  opts.ToLower();
+  if (opts.Contains("specialoutput")) fUseSpecialOutput = kTRUE;
+
   // Define input and output slots here
   DefineOutput(1, TList::Class());
+  fBranchNames = "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.,AliESDVZERO.,"
+                 "AliESDZDC.,SPDVertex.,PrimaryVertex.,TPCVertex.,Tracks,SPDPileupVertices";
   
   AliLog::SetClassDebugLevel("AliPhysicsSelectionTask", AliLog::kWarning);
 }
@@ -60,7 +69,7 @@ AliPhysicsSelectionTask::~AliPhysicsSelectionTask()
   // histograms are in the output list and deleted when the output
   // list is deleted by the TSelector dtor
 
-  if (fOutput) {
+  if (fOutput && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
     delete fOutput;
     fOutput = 0;
   }
@@ -72,6 +81,8 @@ void AliPhysicsSelectionTask::UserCreateOutputObjects()
 
   Printf("AliPhysicsSelectionTask::CreateOutputObjects");
 
+  if (fUseSpecialOutput) OpenFile(1);
+
   fOutput = new TList;
   fOutput->SetOwner();
   
@@ -92,6 +103,14 @@ void AliPhysicsSelectionTask::UserExec(Option_t*)
   PostData(1, fOutput);
 }
 
+void AliPhysicsSelectionTask::FinishTaskOutput()
+{
+// This gets called at the end of the processing on the worker. It allows dumping
+// statistics printed by the physics selection object to the statistics message
+// handled by the analysis manager.
+   if (fPhysicsSelection) fPhysicsSelection->Print("STAT");
+}
+
 void AliPhysicsSelectionTask::Terminate(Option_t *)
 {
   // The Terminate() function is the last function to be called during
@@ -118,5 +137,5 @@ void AliPhysicsSelectionTask::Terminate(Option_t *)
   fout->Write();
   fout->Close();
   
-  Printf("Writting result to event_stat.root");
+  Printf("Writing result to event_stat.root");
 }