]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RAW/AliMDC.h
changing spaces to tabs ;-)
[u/mrichter/AliRoot.git] / RAW / AliMDC.h
CommitLineData
a197a4ce 1#ifndef ALIMDC_H
2#define ALIMDC_H
3// @(#)alimdc:$Name$:$Id$
4// Author: Fons Rademakers 26/11/99
5
6/* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
7 * See cxx source for full Copyright notice */
8
9//////////////////////////////////////////////////////////////////////////
10// //
11// AliMDC //
12// //
13//////////////////////////////////////////////////////////////////////////
14
15#ifndef ROOT_TObject
16#include <TObject.h>
17#endif
18
e10815f1 19#ifndef ROOT_TObjArray
20#include <TObjArray.h>
21#endif
22
a197a4ce 23#ifndef ROOT_TSysEvtHandler
24#include <TSysEvtHandler.h>
25#endif
26
27// Forward class declarations
a109e73e 28class AliRawEvent;
f2dc6b20 29class AliRawEventHeaderBase;
a197a4ce 30class AliRawEquipmentHeader;
31class AliRawData;
e10815f1 32class AliRawDB;
e10815f1 33class AliTagDB;
34class AliStats;
a109e73e 35class AliESD;
a197a4ce 36
37class AliMDC : public TObject {
38
39public:
40 enum EWriteMode { kLOCAL, kRFIO, kROOTD, kCASTOR, kDEVNULL };
e10815f1 41 enum EFilterMode { kFilterOff, kFilterTransparent, kFilterOn };
f07ec911 42 enum EErrorCode { kErrStartEndRun = -1,
e10815f1 43 kErrHeader = -2,
44 kErrHeaderSize = -3,
45 kErrSubHeader = -4,
46 kErrDataSize = -5,
47 kErrEquipmentHeader = -6,
d21e9888 48 kErrEquipment = -7,
f07ec911 49 kErrFileSize = -8,
50 kFilterReject = -9,
51 kErrWriting = -10 };
e10815f1 52
53 AliMDC(Int_t compress, Bool_t deleteFiles,
54 EFilterMode filterMode = kFilterTransparent,
e10815f1 55 Double_t maxSizeTagDB = -1, const char* fileNameTagDB = NULL);
56 virtual ~AliMDC();
57
4fbf7315 58 Int_t Open(EWriteMode mode, const char* fileName,
59 Double_t maxFileSize = 0,
60 const char* fs1 = NULL, const char* fs2 = NULL);
e10815f1 61 Int_t ProcessEvent(void* event, Bool_t isIovecArray = kFALSE);
d21e9888 62 Int_t GetTotalSize();
e10815f1 63 Int_t Close();
64
65 Int_t Run(const char* inputFile, Bool_t loop,
66 EWriteMode mode, Double_t maxFileSize,
67 const char* fs1 = NULL, const char* fs2 = NULL);
68 void Stop();
a197a4ce 69
70private:
71 class AliMDCInterruptHandler : public TSignalHandler {
72 public:
73 AliMDCInterruptHandler(AliMDC *mdc) : TSignalHandler(kSigUser1, kFALSE), fMDC(mdc) { }
74 Bool_t Notify() {
75 Info("Notify", "received a SIGUSR1 signal");
e10815f1 76 fMDC->Stop();
a197a4ce 77 return kTRUE;
78 }
79 private:
80 AliMDC *fMDC; // alimdc to signal
81
d557984f 82 AliMDCInterruptHandler(const AliMDCInterruptHandler& handler); // Not implemented
83 AliMDCInterruptHandler& operator=(const AliMDCInterruptHandler& handler); // Not implemented
a197a4ce 84 };
85
e10815f1 86 AliRawEvent *fEvent; // produced AliRawEvent
87 AliESD *fESD; // pointer to HLT ESD object
88 AliStats *fStats; // statistics
89 AliRawDB *fRawDB; // raw data DB
e10815f1 90 AliTagDB *fTagDB; // tag DB
91 Int_t fCompress; // compression factor used for raw output DB
92 Bool_t fDeleteFiles; // flag for deletion of files
93 EFilterMode fFilterMode; // high level filter mode
94 TObjArray fFilters; // filter algorithms
95 Bool_t fStop; // stop execution (triggered by SIGUSR1)
f2dc6b20 96 Bool_t fIsTagDBCreated; // is tag db already created
97 Double_t fMaxSizeTagDB;// max size of the tag DB
98 const char* fFileNameTagDB;// tag DB file name
e10815f1 99
100 // Filter names
101 enum {kNFilters = 1};
102 static const char* const fgkFilterName[kNFilters];
a197a4ce 103
104 AliMDC(const AliMDC& mdc);
105 AliMDC& operator = (const AliMDC& mdc);
106
107 Int_t Read(const char *name) { return TObject::Read(name); }
e10815f1 108 Int_t Read(Int_t fd, void *buffer, Int_t length);
a197a4ce 109 Int_t ReadEquipmentHeader(AliRawEquipmentHeader &header,
e10815f1 110 Bool_t isSwapped, char*& data);
111 Int_t ReadRawData(AliRawData &raw, Int_t size, char*& data);
a197a4ce 112
113 ClassDef(AliMDC,0) // MDC processor
114};
115
116#endif