New flat raw-data event format. The details can be found at: http://indico.cern.ch...
[u/mrichter/AliRoot.git] / RAW / AliRawEventV2.h
CommitLineData
33314186 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
42class AliRawEventHeaderBase;
43class AliRawVEquipment;
44class AliRawEquipmentV2;
45
46#include "AliRawVEvent.h"
47
48class AliRawEventV2 : public AliRawVEvent {
49
50public:
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
64private:
65 TClonesArray fEquipments; // AliRawEquipmentV2's
66 TClonesArray *fEvtHdrs; //-> event and subevent headers
67
68 Int_t fIndex; //!
69 Int_t fNAllocHdrs; //!
70 Int_t fNAllocEqs; //!
71
72 AliRawEventV2(const AliRawEventV2& rawEvent);
73 AliRawEventV2& operator = (const AliRawEventV2& rawEvent);
74
75 ClassDef(AliRawEventV2,1) // ALICE raw event object
76};
77
78#endif