]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliPhysicsSelectionTask.cxx
add histograms to check the mass of selected mesons
[u/mrichter/AliRoot.git] / ANALYSIS / AliPhysicsSelectionTask.cxx
index c1b297c96db7b39e30704bf185de4873a70fc4fc..def25984ce0749c283b0d6bfb94ffb1ab33665be 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();
   
@@ -79,6 +90,8 @@ void AliPhysicsSelectionTask::UserCreateOutputObjects()
     fPhysicsSelection = new AliPhysicsSelection;
   
   fOutput->Add(fPhysicsSelection);
+  // All tasks must post data once for all outputs (AG)
+  PostData(1, fOutput);
 }
 
 void AliPhysicsSelectionTask::UserExec(Option_t*)
@@ -90,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
@@ -110,7 +131,7 @@ void AliPhysicsSelectionTask::Terminate(Option_t *)
   if (fPhysicsSelection)
   {
     fPhysicsSelection->Print();
-    fPhysicsSelection->SaveHistograms("physics_selection");
+    fPhysicsSelection->SaveHistograms();
   }
     
   fout->Write();