2 // Author: Fons Rademakers 26/11/99
4 /**************************************************************************
5 * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
7 * Author: The ALICE Off-line Project. *
8 * Contributors are mentioned in the code where appropriate. *
10 * Permission to use, copy, modify and distribute this software and its *
11 * documentation strictly for non-commercial purposes is hereby granted *
12 * without fee, provided that the above copyright notice appears in all *
13 * copies and that both the copyright notice and this permission notice *
14 * appear in the supporting documentation. The authors make no claims *
15 * about the suitability of this software for any purpose. It is *
16 * provided "as is" without express or implied warranty. *
17 **************************************************************************/
19 //////////////////////////////////////////////////////////////////////////
23 // Set of classes defining the ALICE RAW event format. The AliRawEvent //
24 // class defines a RAW event. It consists of an AliEventHeader object //
25 // an AliEquipmentHeader object, an AliRawData object and an array of //
26 // sub-events, themselves also being AliRawEvents. The number of //
27 // sub-events depends on the number of DATE LDC's. //
28 // The AliRawEvent objects are written to a ROOT file using different //
29 // technologies, i.e. to local disk via AliRawDB or via rfiod using //
30 // AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via //
31 // rootd using AliRawCastorDB (and for performance testing there is //
32 // also AliRawNullDB). //
33 // The AliStats class provides statics information that is added as //
34 // a single keyed object to each raw file. //
35 // The AliTagDB provides an interface to a TAG database. //
36 // The AliMDC class is usid by the "alimdc" stand-alone program //
37 // that reads data directly from DATE. //
39 //////////////////////////////////////////////////////////////////////////
41 #include <TObjArray.h>
45 #include "AliRawEventHeaderBase.h"
46 #include "AliRawEquipment.h"
48 #include "AliRawEvent.h"
54 //______________________________________________________________________________
55 AliRawEvent::AliRawEvent():
62 // Create ALICE event object. If ownData is kFALSE we will use a static
63 // raw data object, otherwise a private copy will be made.
67 //______________________________________________________________________________
68 AliRawEventHeaderBase *AliRawEvent::GetHeader()
71 AliFatal("Event header does not exist!");
78 //______________________________________________________________________________
79 AliRawVEquipment *AliRawEvent::GetEquipment(Int_t index) const
81 // Get specified equipment. Returns 0 if equipment does not exist.
86 return (AliRawEquipment *) fEquipments->At(index);
89 //______________________________________________________________________________
90 AliRawVEvent *AliRawEvent::GetSubEvent(Int_t index)
92 // Get specified sub event. Returns 0 if sub event does not exist.
97 return (AliRawEvent *) fSubEvents->At(index);
100 //______________________________________________________________________________
101 AliRawEvent::~AliRawEvent()
103 // Clean up event object. Delete also, possible, private raw data.
107 fEquipments->Delete();
110 fSubEvents->Delete();
114 //______________________________________________________________________________
115 void AliRawEvent::Streamer(TBuffer &R__b)
117 // Stream an object of class AliRawEvent.
120 if (R__b.IsReading()) {
121 Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
122 TObject::Streamer(R__b);
123 R__b >> fNEquipments;
128 R__b.CheckByteCount(R__s, R__c, AliRawEvent::IsA());
130 R__c = R__b.WriteVersion(AliRawEvent::IsA(), kTRUE);
131 TObject::Streamer(R__b);
132 R__b << fNEquipments;
137 R__b.SetByteCount(R__c, kTRUE);