]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - JETAN/AliAnalysisTaskJets.cxx
Standard connection to ESD in chain.
[u/mrichter/AliRoot.git] / JETAN / AliAnalysisTaskJets.cxx
index 7c12a94fff177c67e3e022f8684191f5d92ac071..9abfd8804ca380aa6ed471bed51512b5044d44a6 100644 (file)
@@ -27,31 +27,63 @@ ClassImp(AliAnalysisTaskJets)
 
 ////////////////////////////////////////////////////////////////////////
 
+AliAnalysisTaskJets::AliAnalysisTaskJets():
+    fDebug(0),
+    fJetFinder(0x0),
+    fChain(0x0),
+    fESD(0x0),
+    fTreeJ(0x0)
+{
+  // Default constructor
+}
+
 AliAnalysisTaskJets::AliAnalysisTaskJets(const char* name):
     AliAnalysisTask(name, "AnalysisTaskJets"),
     fDebug(0),
     fJetFinder(0x0),
     fChain(0x0),
-    fESD(0x0)
+    fESD(0x0),
+    fTreeJ(0x0)
 {
   // Default constructor
     DefineInput (0, TChain::Class());
-    DefineOutput(0, TH1::Class());
+    DefineOutput(0, TTree::Class());
 }
 
-void AliAnalysisTaskJets::ConnectInputData(Option_t */*option*/)
+void AliAnalysisTaskJets::CreateOutputObjects()
 {
-// Initialisation
-//
-    if (fDebug > 1) printf("AnalysisJets::Init() \n");
+// Create the output container
+    fTreeJ = fJetFinder->MakeTreeJ("TreeJ");
+}
+
+void AliAnalysisTaskJets::Init()
+{
+    // Initialization
+    if (fDebug > 1) printf("AnalysisTaskJets::Init() \n");
 
     // Call configuration file
     gROOT->LoadMacro("ConfigJetAnalysis.C");
     fJetFinder = (AliJetFinder*) gInterpreter->ProcessLine("ConfigJetAnalysis()");
     // Initialise Jet Analysis
     fJetFinder->Init();
+}
+
+void AliAnalysisTaskJets::ConnectInputData(Option_t */*option*/)
+{
+// Connect the input data
+//
+    if (fDebug > 1) printf("AnalysisTaskJets::ConnectInputData() \n");
+    char ** address = (char **)GetBranchAddress(0, "ESD");
+
+    if (address)     {
+       fESD = (AliESD*)(*address);
+    }
+    else     {
+       fESD = new AliESD();
+       SetBranchAddress(0, "ESD", &fESD); // first task taking the branch enables it
+    }
     fChain = (TChain*)GetInputData(0);
-    fJetFinder->ConnectTree(fChain);
+    fJetFinder->ConnectTree(fChain, fESD);
     fJetFinder->WriteHeaders();
 }
 
@@ -60,16 +92,17 @@ void AliAnalysisTaskJets::Exec(Option_t */*option*/)
 // Execute analysis for current event
 //
     Long64_t ientry = fChain->GetReadEntry();
-     if (fDebug > 1) printf("Analysing event # %5d \n", (Int_t) ientry);
-    
+    if (fDebug > 1) printf("Analysing event # %5d \n", (Int_t) ientry);
     fJetFinder->ProcessEvent(ientry);
+    PostData(0, fTreeJ);
 }
 
 void AliAnalysisTaskJets::Terminate(Option_t */*option*/)
 {
 // Terminate analysis
 //
-    printf("AnalysisJets: Terminate() \n");
+    if (fDebug > 1) printf("AnalysisJets: Terminate() \n");
+   
     if (fJetFinder) fJetFinder->FinishRun();
 }