]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliAnalysisTaskSEVertexingHF.cxx
Bug fixes.
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSEVertexingHF.cxx
index ecad3b4e95ebb0fd499df66c0e08c82bb5a9da44..7d7867d3650b65ffa78baece1e3c2b89c2b0cfbd 100644 (file)
@@ -24,6 +24,8 @@
 #include <TROOT.h>
 #include <TSystem.h>
 #include <TClonesArray.h>
+#include <TList.h>
+#include <TString.h>
 
 #include "AliVEvent.h"
 #include "AliAODEvent.h"
@@ -40,12 +42,15 @@ ClassImp(AliAnalysisTaskSEVertexingHF)
 AliAnalysisTaskSEVertexingHF::AliAnalysisTaskSEVertexingHF():
 AliAnalysisTaskSE(),
 fVHF(0),
+fListOfCuts(0),
+fDeltaAODFileName("AliAOD.VertexingHF.root"),
 fVerticesHFTClArr(0),
 fD0toKpiTClArr(0),
 fJPSItoEleTClArr(0),
 fCharm3ProngTClArr(0),
 fCharm4ProngTClArr(0),
 fDstarTClArr(0),
+fCascadesTClArr(0),
 fLikeSign2ProngTClArr(0),
 fLikeSign3ProngTClArr(0)
 {
@@ -56,22 +61,33 @@ fLikeSign3ProngTClArr(0)
 AliAnalysisTaskSEVertexingHF::AliAnalysisTaskSEVertexingHF(const char *name):
 AliAnalysisTaskSE(name),
 fVHF(0),
+fListOfCuts(0),
+fDeltaAODFileName("AliAOD.VertexingHF.root"),
 fVerticesHFTClArr(0),
 fD0toKpiTClArr(0),
 fJPSItoEleTClArr(0),
 fCharm3ProngTClArr(0),
 fCharm4ProngTClArr(0),
 fDstarTClArr(0),
+fCascadesTClArr(0),
 fLikeSign2ProngTClArr(0),
 fLikeSign3ProngTClArr(0)
 {
-  // Default constructor
+  // Standard constructor
+
+  DefineOutput(1,TList::Class()); // analysis cuts
 }
 
 //________________________________________________________________________
 AliAnalysisTaskSEVertexingHF::~AliAnalysisTaskSEVertexingHF()
 {
   // Destructor
+
+  if(fListOfCuts) {
+    delete fListOfCuts;
+    fListOfCuts=NULL;
+  }
+
 }  
 
 //________________________________________________________________________
@@ -89,7 +105,15 @@ void AliAnalysisTaskSEVertexingHF::Init()
 
   fVHF = (AliAnalysisVertexingHF*)gROOT->ProcessLine("ConfigVertexingHF()");  
   fVHF->PrintStatus();
-  AliAnalysisManager::GetAnalysisManager()->RegisterExtraFile("AliAOD.VertexingHF.root");
+
+
+  // write the objects AliRDHFCuts to a list to store in the output
+
+  fListOfCuts = fVHF->FillListOfCuts();
+
+  PostData(1,fListOfCuts);
+
+  AliAnalysisManager::GetAnalysisManager()->RegisterExtraFile(fDeltaAODFileName.Data());
 
   return;
 }
@@ -102,12 +126,14 @@ void AliAnalysisTaskSEVertexingHF::UserCreateOutputObjects()
   if(fDebug > 1) printf("AnalysisTaskSEVertexingHF::UserCreateOutPutData() \n");
   // Support both the case when the AOD + deltaAOD are produced in an ESD
   // analysis or if the deltaAOD is produced on an analysis on AOD's. (A.G. 27/04/09)
-  if (!AODEvent()) {
-     Fatal("UserCreateOutputObjects", "This task needs an AOD handler");
-     return;
+  if(!AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()) {
+    Fatal("UserCreateOutputObjects", "This task needs an AOD handler");
+    return;
   }   
-  TString filename = "AliAOD.VertexingHF.root";
-  if (!IsStandardAOD()) filename = "";
+  TString filename = fDeltaAODFileName;
+  // When running on standard AOD to produce deltas, IsStandardAOD is never set,
+  // If AODEvent is NULL, new branches have to be added to the new file(s) (A.G. 15/01/10)
+  if(!IsStandardAOD() && AODEvent()) filename = "";
   if(!fVHF) {
     printf("AnalysisTaskSEVertexingHF::UserCreateOutPutData() \n ERROR! no fvHF!\n");
     return;
@@ -147,6 +173,12 @@ void AliAnalysisTaskSEVertexingHF::UserCreateOutputObjects()
     AddAODBranch("TClonesArray", &fDstarTClArr, filename);
   }
 
+  if(fVHF->GetCascades()){
+    fCascadesTClArr = new TClonesArray("AliAODRecoCascadeHF", 0);
+    fCascadesTClArr->SetName("CascadesHF");
+    AddAODBranch("TClonesArray", &fCascadesTClArr, filename);
+  }
+
   if(fVHF->GetLikeSign()) {                      
     fLikeSign2ProngTClArr = new TClonesArray("AliAODRecoDecayHF2Prong", 0);
     fLikeSign2ProngTClArr->SetName("LikeSign2Prong");
@@ -181,6 +213,7 @@ void AliAnalysisTaskSEVertexingHF::UserExec(Option_t */*option*/)
                       fCharm3ProngTClArr,
                       fCharm4ProngTClArr,
                       fDstarTClArr,
+                      fCascadesTClArr,
                        fLikeSign2ProngTClArr,
                        fLikeSign3ProngTClArr);