Update responsibles for MCH, MTR, HMP
[u/mrichter/AliRoot.git] / RAW / AliRawEventV2.h
1 #ifndef ALIRAWEVENTV2_H
2 #define ALIRAWEVENTV2_H
3 // Author: Cvetan Cheshkov  11/05/2009
4
5 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7
8 //////////////////////////////////////////////////////////////////////////
9 //                                                                      //
10 // AliRawEventV2                                                          //
11 //                                                                      //
12 // Set of classes defining the ALICE RAW event format. The AliRawEventV2  //
13 // class defines a RAW event. It consists of an AliEventHeader object   //
14 // an AliEquipmentHeader object, an AliRawData object and an array of   //
15 // sub-events, themselves also being AliRawEventV2s. The number of        //
16 // sub-events depends on the number of DATE LDC's.                      //
17 // The AliRawEventV2 objects are written to a ROOT file using different   //
18 // technologies, i.e. to local disk via AliRawDB or via rfiod using     //
19 // AliRawRFIODB or via rootd using AliRawRootdDB or to CASTOR via       //
20 // rootd using AliRawCastorDB (and for performance testing there is     //
21 // also AliRawNullDB).                                                  //
22 // The AliRunDB class provides the interface to the run and file        //
23 // catalogues (AliEn or plain MySQL).                                   //
24 // The AliStats class provides statics information that is added as     //
25 // a single keyed object to each raw file.                              //
26 // The AliTagDB provides an interface to a TAG database.                //
27 // The AliMDC class is usid by the "alimdc" stand-alone program         //
28 // that reads data directly from DATE.                                  //
29 //                                                                      //
30 //////////////////////////////////////////////////////////////////////////
31
32 #ifndef ROOT_TObject
33 #include <TObject.h>
34 #endif
35
36 #ifndef ROOT_TClonesArray
37 #include <TClonesArray.h>
38 #endif
39
40
41 // Forward class declarations
42 class AliRawEventHeaderBase;
43 class AliRawVEquipment;
44 class AliRawEquipmentV2;
45
46 #include "AliRawVEvent.h"
47
48 class AliRawEventV2 : public AliRawVEvent {
49
50 public:
51    AliRawEventV2();
52    virtual ~AliRawEventV2();
53
54    AliRawEventHeaderBase *GetHeader(char*& data);
55    virtual AliRawEventHeaderBase *GetHeader();
56    virtual Int_t                  GetNEquipments() const;
57    AliRawEquipmentV2             *NextEquipment();
58    virtual AliRawVEquipment      *GetEquipment(Int_t index) const;
59    virtual Int_t                  GetNSubEvents() const { return (fEvtHdrs) ? (fEvtHdrs->GetEntriesFast()-1) : 0; }
60    AliRawEventV2                 *NextSubEvent();
61    virtual AliRawVEvent          *GetSubEvent(Int_t index);
62    void                           Reset();
63    virtual void                   Clear(Option_t* = "");
64
65 private:
66    TClonesArray           fEquipments;  // AliRawEquipmentV2's
67    TClonesArray          *fEvtHdrs;     //-> event and subevent headers
68
69    Int_t                  fIndex;       //!
70    Int_t                  fNAllocHdrs;  //!
71    Int_t                  fNAllocEqs;   //!
72
73    AliRawEventV2(const AliRawEventV2& rawEvent);
74    AliRawEventV2& operator = (const AliRawEventV2& rawEvent);
75
76    ClassDef(AliRawEventV2,1)  // ALICE raw event object
77 };
78
79 #endif