]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - RAW/AliRawEvent.cxx
activation howto for the MC publisher
[u/mrichter/AliRoot.git] / RAW / AliRawEvent.cxx
index 7cd1e8182585cbc83dd205fb4c53e274981694aa..851ae27a49a46599865329c0a8bfaf1d53602dca 100644 (file)
@@ -1,4 +1,4 @@
-// @(#)alimdc:$Name$:$Id$
+// @(#) $Id$
 // Author: Fons Rademakers  26/11/99
 
 /**************************************************************************
@@ -30,8 +30,6 @@
 // AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via       //
 // rootd using AliRawCastorDB (and for performance testing there is     //
 // also AliRawNullDB).                                                  //
-// The AliRunDB class provides the interface to the run and file        //
-// catalogues (AliEn or plain MySQL).                                   //
 // The AliStats class provides statics information that is added as     //
 // a single keyed object to each raw file.                              //
 // The AliTagDB provides an interface to a TAG database.                //
 
 #include <TObjArray.h>
 
-#include "AliRawEventHeader.h"
-#include "AliRawEquipmentHeader.h"
-#include "AliRawData.h"
+#include "AliLog.h"
+
+#include "AliRawEventHeaderBase.h"
+#include "AliRawEquipment.h"
 
 #include "AliRawEvent.h"
 
@@ -53,95 +52,42 @@ ClassImp(AliRawEvent)
 
 
 //______________________________________________________________________________
-AliRawEvent::AliRawEvent()
+AliRawEvent::AliRawEvent():
+fNEquipments(0),
+fNSubEvents(0),
+fEvtHdr(NULL),
+fEquipments(NULL),
+fSubEvents(NULL)
 {
    // Create ALICE event object. If ownData is kFALSE we will use a static
    // raw data object, otherwise a private copy will be made.
 
-   fNSubEvents = 0;
-   fEvtHdr     = 0;
-   fEqpHdr     = 0;
-   fRawData    = 0;
-   fSubEvents  = 0;
-}
-
-//______________________________________________________________________________
-AliRawEvent::AliRawEvent(const AliRawEvent& rawEvent): TObject(rawEvent)
-{
-// copy constructor
-
-  Fatal("AliRawEvent", "copy constructor not implemented");
-}
-
-//______________________________________________________________________________
-AliRawEvent& AliRawEvent::operator = (const AliRawEvent& /*rawEvent*/)
-{
-// assignment operator
-
-  Fatal("operator =", "assignment operator not implemented");
-  return *this;
-}
-
-//______________________________________________________________________________
-AliRawEventHeader *AliRawEvent::GetHeader()
-{
-   // Get event header part of AliRawEvent.
-
-   if (!fEvtHdr)
-      fEvtHdr = new AliRawEventHeader;
-
-   return fEvtHdr;
-}
-
-//______________________________________________________________________________
-AliRawEquipmentHeader *AliRawEvent::GetEquipmentHeader()
-{
-   // Get equipment header part of AliRawEvent.
-
-   if (!fEqpHdr)
-      fEqpHdr = new AliRawEquipmentHeader;
-
-   return fEqpHdr;
 }
 
 //______________________________________________________________________________
-AliRawData *AliRawEvent::GetRawData()
+AliRawEventHeaderBase *AliRawEvent::GetHeader()
 {
-   // Get raw data part of AliRawEvent.
-
-   if (!fRawData)
-      fRawData = new AliRawData;
+  if (!fEvtHdr) {
+    AliFatal("Event header does not exist!");
+    return 0x0;
+  }
 
-   return fRawData;
+  return fEvtHdr;
 }
 
 //______________________________________________________________________________
-AliRawEvent *AliRawEvent::NextSubEvent()
+AliRawVEquipment *AliRawEvent::GetEquipment(Int_t index) const
 {
-   // Returns next sub-event object.
+   // Get specified equipment. Returns 0 if equipment does not exist.
 
-   if (!fSubEvents)
-      fSubEvents = new TObjArray(100); // arbitrary, probably enough to prevent resizing
-
-   if (fSubEvents->GetSize() <= fNSubEvents) {
-      fSubEvents->Expand(fNSubEvents+10);
-      Warning("NextSubEvent", "expanded fSubEvents by 10 to %d",
-              fSubEvents->GetSize());
-   }
-
-   AliRawEvent *ev;
-   if (!(ev = (AliRawEvent *)fSubEvents->At(fNSubEvents))) {
-      ev = new AliRawEvent;
-      fSubEvents->AddAt(ev, fNSubEvents);
-   }
-
-   fNSubEvents++;
+   if (!fEquipments)
+      return 0;
 
-   return ev;
+   return (AliRawEquipment *) fEquipments->At(index);
 }
 
 //______________________________________________________________________________
-AliRawEvent *AliRawEvent::GetSubEvent(Int_t index) const
+AliRawVEvent *AliRawEvent::GetSubEvent(Int_t index)
 {
    // Get specified sub event. Returns 0 if sub event does not exist.
 
@@ -151,29 +97,43 @@ AliRawEvent *AliRawEvent::GetSubEvent(Int_t index) const
    return (AliRawEvent *) fSubEvents->At(index);
 }
 
-//______________________________________________________________________________
-void AliRawEvent::Reset()
-{
-   // Reset the event in case it needs to be re-used (avoiding costly
-   // new/delete cycle). We reset the size marker for the AliRawData
-   // objects and the sub event counter.
-
-   for (int i = 0; i < fNSubEvents; i++) {
-      AliRawEvent *ev = (AliRawEvent *)fSubEvents->At(i);
-      ev->GetRawData()->SetSize(0);
-   }
-   fNSubEvents = 0;
-}
-
 //______________________________________________________________________________
 AliRawEvent::~AliRawEvent()
 {
    // Clean up event object. Delete also, possible, private raw data.
 
    delete fEvtHdr;
-   delete fEqpHdr;
-   delete fRawData;
+   if (fEquipments)
+      fEquipments->Delete();
+   delete fEquipments;
    if (fSubEvents)
       fSubEvents->Delete();
    delete fSubEvents;
 }
+
+//______________________________________________________________________________
+void AliRawEvent::Streamer(TBuffer &R__b)
+{
+   // Stream an object of class AliRawEvent.
+
+   UInt_t R__s, R__c;
+   if (R__b.IsReading()) {
+      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
+      TObject::Streamer(R__b);
+      R__b >> fNEquipments;
+      R__b >> fNSubEvents;
+      R__b >> fEvtHdr;
+      R__b >> fEquipments;
+      R__b >> fSubEvents;
+      R__b.CheckByteCount(R__s, R__c, AliRawEvent::IsA());
+   } else {
+      R__c = R__b.WriteVersion(AliRawEvent::IsA(), kTRUE);
+      TObject::Streamer(R__b);
+      R__b << fNEquipments;
+      R__b << fNSubEvents;
+      R__b << fEvtHdr;
+      R__b << fEquipments;
+      R__b << fSubEvents;
+      R__b.SetByteCount(R__c, kTRUE);
+   }
+}