AliMDC and DB classes moved from library to alimdc executable
[u/mrichter/AliRoot.git] / RAW / AliRawEvent.h
1 #ifndef ALIRAWEVENT_H
2 #define ALIRAWEVENT_H
3 // @(#)alimdc:$Name$:$Id$
4 // Author: Fons Rademakers  26/11/99
5 // Updated: Dario Favretto  15/04/2003
6
7 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
8  * See cxx source for full Copyright notice                               */
9
10 //////////////////////////////////////////////////////////////////////////
11 //                                                                      //
12 // AliRawEvent                                                          //
13 //                                                                      //
14 // Set of classes defining the ALICE RAW event format. The AliRawEvent  //
15 // class defines a RAW event. It consists of an AliEventHeader object   //
16 // an AliEquipmentHeader object, an AliRawData object and an array of   //
17 // sub-events, themselves also being AliRawEvents. The number of        //
18 // sub-events depends on the number of DATE LDC's.                      //
19 // The AliRawEvent objects are written to a ROOT file using different   //
20 // technologies, i.e. to local disk via AliRawDB or via rfiod using     //
21 // AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via       //
22 // rootd using AliRawCastorDB (and for performance testing there is     //
23 // also AliRawNullDB).                                                  //
24 // The AliRunDB class provides the interface to the run and file        //
25 // catalogues (AliEn or plain MySQL).                                   //
26 // The AliStats class provides statics information that is added as     //
27 // a single keyed object to each raw file.                              //
28 // The AliTagDB provides an interface to a TAG database.                //
29 // The AliMDC class is usid by the "alimdc" stand-alone program         //
30 // that reads data directly from DATE.                                  //
31 //                                                                      //
32 //////////////////////////////////////////////////////////////////////////
33
34 #ifndef ROOT_TObject
35 #include <TObject.h>
36 #endif
37
38 #ifndef ROOT_TObjArray
39 #include <TObjArray.h>
40 #endif
41
42
43 // Forward class declarations
44 class AliRawEventHeader;
45 class AliRawEquipment;
46
47
48 class AliRawEvent : public TObject {
49
50 public:
51    AliRawEvent();
52    virtual ~AliRawEvent();
53
54    AliRawEventHeader     *GetHeader();
55    Int_t                  GetNEquipments() const { return fNEquipments; }
56    AliRawEquipment       *NextEquipment();
57    AliRawEquipment       *GetEquipment(Int_t index) const;
58    Int_t                  GetNSubEvents() const { return fNSubEvents; }
59    AliRawEvent           *NextSubEvent();
60    AliRawEvent           *GetSubEvent(Int_t index) const;
61    void                   Reset();
62
63 private:
64    Int_t                  fNEquipments; // number of valid equipments
65    Int_t                  fNSubEvents;  // number of valid sub-events
66    AliRawEventHeader     *fEvtHdr;      // event header object
67    TObjArray             *fEquipments;  // AliRawEquipment's
68    TObjArray             *fSubEvents;   // sub AliRawEvent's
69
70    AliRawEvent(const AliRawEvent& rawEvent);
71    AliRawEvent& operator = (const AliRawEvent& rawEvent);
72
73    ClassDef(AliRawEvent,2)  // ALICE raw event object
74 };
75
76 #endif