VirtualEventHandler interface and its implementation AliAODHandler.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Jun 2007 15:38:08 +0000 (15:38 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 4 Jun 2007 15:38:08 +0000 (15:38 +0000)
STEER/AODLinkDef.h
STEER/AliAODEvent.cxx
STEER/AliAODEvent.h
STEER/AliAODHandler.cxx [new file with mode: 0644]
STEER/AliAODHandler.h [new file with mode: 0644]
STEER/AliVirtualEventHandler.cxx [new file with mode: 0644]
STEER/AliVirtualEventHandler.h [new file with mode: 0644]
STEER/libAOD.pkg

index 71c83bd..5a7e72a 100644 (file)
@@ -25,7 +25,8 @@
 #pragma link C++ class AliAODRedCov<4>+;
 #pragma link C++ class AliAODRedCov<6>+;
 #pragma link C++ class AliAODRecoDecay;
-
+#pragma link C++ class AliVirtualEventHandler+;
+#pragma link C++ class AliAODHandler+;
 #endif
 
 
index a453940..867837c 100644 (file)
@@ -20,6 +20,8 @@
 //     Author: Markus Oldenburg, CERN
 //-------------------------------------------------------------------------
 
+#include <TTree.h>
+
 #include "AliAODEvent.h"
 #include "AliAODHeader.h"
 #include "AliAODTrack.h"
@@ -29,11 +31,11 @@ ClassImp(AliAODEvent)
 //______________________________________________________________________________
 AliAODEvent::AliAODEvent() :
   fAODObjects(new TList()),
-  fHeader((AliAODHeader*)fAODObjects->At(0)),
-  fTracks((TClonesArray*)fAODObjects->At(1)),
-  fVertices((TClonesArray*)fAODObjects->At(2)),
-  fClusters((TClonesArray*)fAODObjects->At(3)),
-  fJets((TClonesArray*)fAODObjects->At(4))
+  fHeader(0),
+  fTracks(0),
+  fVertices(0),
+  fClusters(0),
+  fJets(0)
 {
   // default constructor
 }
@@ -41,9 +43,8 @@ AliAODEvent::AliAODEvent() :
 //______________________________________________________________________________
 AliAODEvent::~AliAODEvent() 
 {
-  // destructor
-
-  delete fAODObjects;
+// destructor
+    delete fAODObjects;
 }
 
 //______________________________________________________________________________
@@ -88,7 +89,7 @@ void AliAODEvent::CreateStdContent()
 }
 
 //______________________________________________________________________________
-void AliAODEvent::GetStdContent() const
+void AliAODEvent::GetStdContent()
 {
   // set pointers for standard content
 
@@ -112,6 +113,15 @@ void AliAODEvent::ResetStd(Int_t trkArrSize, Int_t vtxArrSize)
     fVertices->Expand(vtxArrSize);
 }
 
+void AliAODEvent::ClearStd()
+{
+  // clears the standard arrays
+    fTracks   ->Clear();
+    fVertices ->Clear();
+    fClusters ->Clear();
+    fJets     ->Clear();
+}
+
 //______________________________________________________________________________
 Int_t AliAODEvent::GetMuonTracks(TRefArray *muonTracks) const
 {
@@ -128,3 +138,5 @@ Int_t AliAODEvent::GetMuonTracks(TRefArray *muonTracks) const
   
   return muonTracks->GetSize();
 }
+
+
index b668842..b565b45 100644 (file)
@@ -21,6 +21,7 @@
 #include "AliAODCluster.h"
 #include "AliAODJet.h"
 
+
 class AliAODEvent : public TObject {
 
  public :
@@ -71,23 +72,23 @@ class AliAODEvent : public TObject {
     {new((*fJets)[fJets->GetEntries()]) AliAODJet(*vtx);}
 
   // -- Services
-  void CreateStdContent();
-  void GetStdContent() const;
-  void ResetStd(Int_t trkArrSize = 0, Int_t vtxArrSize = 0);
-
+  void    CreateStdContent();
+  void    GetStdContent();
+  void    ResetStd(Int_t trkArrSize = 0, Int_t vtxArrSize = 0);
+  void    ClearStd();
  private :
 
   AliAODEvent(const AliAODEvent&); // Not implemented
   AliAODEvent& operator=(const AliAODEvent&); // Not implemented
 
-  TList *fAODObjects; // list of AODObjects
-
+  TList *fAODObjects; //  list of AODObjects
+  
   // standard content
-  mutable AliAODHeader  *fHeader;   //! event information
-  mutable TClonesArray  *fTracks;   //! charged tracks
-  mutable TClonesArray  *fVertices; //! vertices
-  mutable TClonesArray  *fClusters; //! neutral particles
-  mutable TClonesArray  *fJets;     //! jets
+  AliAODHeader  *fHeader;   //! event information
+  TClonesArray  *fTracks;   //! charged tracks
+  TClonesArray  *fVertices; //! vertices
+  TClonesArray  *fClusters; //! neutral particles
+  TClonesArray  *fJets;     //! jets
 
   ClassDef(AliAODEvent,1);
 };
diff --git a/STEER/AliAODHandler.cxx b/STEER/AliAODHandler.cxx
new file mode 100644 (file)
index 0000000..6c53a2e
--- /dev/null
@@ -0,0 +1,113 @@
+/**************************************************************************
+ * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+//-------------------------------------------------------------------------
+//     Implementation of the Virtual Event Handler Interface for AOD
+//     Author: Andreas Morsch, CERN
+//-------------------------------------------------------------------------
+
+#include <TFile.h>
+#include <TTree.h>
+#include "AliAODHandler.h"
+#include "AliAODEvent.h"
+
+ClassImp(AliAODHandler)
+
+//______________________________________________________________________________
+AliAODHandler::AliAODHandler() :
+    AliVirtualEventHandler(),
+    fAODEvent(NULL),
+    fAODFile(NULL)
+{
+  // default constructor
+}
+
+//______________________________________________________________________________
+AliAODHandler::AliAODHandler(const char* name, const char* title):
+    AliVirtualEventHandler(name, title),
+    fAODEvent(NULL),
+    fAODFile(NULL)
+{
+}
+
+//______________________________________________________________________________
+AliAODHandler::~AliAODHandler() 
+{
+// destructor
+}
+
+
+Bool_t AliAODHandler::InitIO()
+{
+    // Initialize IO
+    fAODEvent = new AliAODEvent();
+    fAODEvent->CreateStdContent();
+//    fAODFile  = new TFile("aod.root", "recreate");
+    CreateTree();
+    
+    return kTRUE;
+}
+
+Bool_t AliAODHandler::Fill()
+{
+    // Fill data structures
+    printf(">>>>>>>>>>> AliAODHandler::Fill()\n");
+    
+    FillTree();
+    fAODEvent->ClearStd();
+    
+    return kTRUE;
+}
+
+Bool_t AliAODHandler::Terminate()
+{
+    // Terminate 
+    AddAODtoTreeUserInfo();
+    return kTRUE;
+}
+
+Bool_t AliAODHandler::TerminateIO()
+{
+    // Terminate IO
+
+//    fAODFile->cd();
+//    fTreeA->Write();
+//    fAODFile->Close();
+    
+    return kTRUE;
+}
+
+
+void AliAODHandler::CreateTree()
+{
+    // Creates the AOD Tree
+    fTreeA = new TTree("AOD", "AliAOD tree");
+    fTreeA->Branch(fAODEvent->GetList());
+}
+
+void AliAODHandler::FillTree()
+{
+    // Fill the AOD Tree
+    fTreeA->Fill();
+}
+
+
+void AliAODHandler::AddAODtoTreeUserInfo()
+{
+    // Add aod event to tree user info
+    fTreeA->GetUserInfo()->Add(fAODEvent);
+}
diff --git a/STEER/AliAODHandler.h b/STEER/AliAODHandler.h
new file mode 100644 (file)
index 0000000..99b3cb1
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef ALIAODHANDLER_H
+#define ALIAODHANDLER_H
+/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+//-------------------------------------------------------------------------
+//     Implementation of the Event Handler Interface for AOD
+//     Author: Andreas Morsch, CERN
+//-------------------------------------------------------------------------
+
+#include "AliVirtualEventHandler.h"
+
+class AliAODEvent;
+class TFile;
+class TTree;
+
+
+
+class AliAODHandler : public AliVirtualEventHandler {
+    
+ public:
+    AliAODHandler();
+    AliAODHandler(const char* name, const char* title);
+    virtual ~AliAODHandler();
+    virtual Bool_t       InitIO();
+    virtual Bool_t       Fill();
+    virtual Bool_t       Terminate();
+    virtual Bool_t       TerminateIO();
+    virtual Bool_t       Notify() {return kTRUE;}
+    //
+    AliAODEvent*         GetAOD()  {return fAODEvent;}
+    TTree*               GetTree() {return fTreeA;}
+    void                 CreateTree();
+    void                 FillTree();
+    void                 AddAODtoTreeUserInfo();
+ private:
+    AliAODHandler(const AliAODHandler&);             // Not implemented
+    AliAODHandler& operator=(const AliAODHandler&);  // Not implemented
+ private:
+    AliAODEvent             *fAODEvent;  //! Pointer to the AOD event
+    TFile                   *fAODFile;   //! Pointer to the AOD file
+    TTree                   *fTreeA;     //! tree for AOD persistency
+
+    
+    ClassDef(AliAODHandler, 1);
+};
+
+#endif
diff --git a/STEER/AliVirtualEventHandler.cxx b/STEER/AliVirtualEventHandler.cxx
new file mode 100644 (file)
index 0000000..2b3a17e
--- /dev/null
@@ -0,0 +1,44 @@
+/**************************************************************************
+ * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/* $Id$ */
+
+//-------------------------------------------------------------------------
+//     Event IO handler base class
+//     Author: Andreas Morsch, CERN
+//-------------------------------------------------------------------------
+
+#include "AliVirtualEventHandler.h"
+
+ClassImp(AliVirtualEventHandler)
+
+//______________________________________________________________________________
+AliVirtualEventHandler::AliVirtualEventHandler() :
+  TNamed()
+{
+  // default constructor
+}
+
+//______________________________________________________________________________
+AliVirtualEventHandler::~AliVirtualEventHandler() 
+{
+// destructor
+}
+
+//______________________________________________________________________________
+AliVirtualEventHandler::AliVirtualEventHandler(const char* name, const char* title):
+    TNamed(name, title)
+{
+}
diff --git a/STEER/AliVirtualEventHandler.h b/STEER/AliVirtualEventHandler.h
new file mode 100644 (file)
index 0000000..69001b9
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef ALIVIRTUALEVENTHANDLER_H
+#define ALIVIRTUALEVENTHANDLER_H
+/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+//-------------------------------------------------------------------------
+//     Event Handler base class
+//     Author: Andreas Morsch, CERN
+//-------------------------------------------------------------------------
+
+#include <TNamed.h>
+
+
+class AliVirtualEventHandler : public TNamed {
+
+ public:
+    AliVirtualEventHandler();
+    AliVirtualEventHandler(const char* name, const char* title);
+    virtual ~AliVirtualEventHandler();
+    virtual Bool_t       InitIO()             = 0;
+    virtual Bool_t       Fill()               = 0;
+    virtual Bool_t       Terminate()          = 0;
+    virtual Bool_t       TerminateIO()        = 0;
+ private :
+  ClassDef(AliVirtualEventHandler, 1);
+};
+
+#endif
index 69ec88f..d8dd17f 100644 (file)
@@ -1,6 +1,7 @@
 SRCS = AliAODEvent.cxx AliVirtualParticle.cxx AliAODHeader.cxx \
        AliAODTrack.cxx AliAODVertex.cxx AliAODCluster.cxx \
-       AliAODJet.cxx AliAODRedCov.cxx AliAODRecoDecay.cxx
+       AliAODJet.cxx AliAODRedCov.cxx AliAODRecoDecay.cxx \
+       AliVirtualEventHandler.cxx AliAODHandler.cxx
 
 HDRS:= $(SRCS:.cxx=.h)