3 // @(#)alimdc:$Name$:$Id$
4 // Author: Fons Rademakers 26/11/99
6 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
7 * See cxx source for full Copyright notice */
9 //////////////////////////////////////////////////////////////////////////
13 //////////////////////////////////////////////////////////////////////////
19 #ifndef ROOT_TObjArray
20 #include <TObjArray.h>
23 #ifndef ROOT_TSysEvtHandler
24 #include <TSysEvtHandler.h>
27 // Forward class declarations
29 class AliRawEventHeader;
30 class AliRawEquipmentHeader;
38 class AliMDC : public TObject {
41 enum EWriteMode { kLOCAL, kRFIO, kROOTD, kCASTOR, kDEVNULL };
42 enum EFilterMode { kFilterOff, kFilterTransparent, kFilterOn };
43 enum EErrorCode { kFilterReject = 0,
49 kErrEquipmentHeader = -6,
53 AliMDC(Int_t compress, Bool_t deleteFiles,
54 EFilterMode filterMode = kFilterTransparent,
55 const char* localRunDB = NULL, Bool_t rdbmsRunDB = kFALSE,
56 const char* alienHostRunDB = NULL, const char* alienDirRunDB = NULL,
57 Double_t maxSizeTagDB = -1, const char* fileNameTagDB = NULL);
60 Int_t Open(EWriteMode mode, const char* fileName);
61 Int_t ProcessEvent(void* event, Bool_t isIovecArray = kFALSE);
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);
71 class AliMDCInterruptHandler : public TSignalHandler {
73 AliMDCInterruptHandler(AliMDC *mdc) : TSignalHandler(kSigUser1, kFALSE), fMDC(mdc) { }
75 Info("Notify", "received a SIGUSR1 signal");
80 AliMDC *fMDC; // alimdc to signal
82 AliMDCInterruptHandler(const AliMDCInterruptHandler& handler);
83 AliMDCInterruptHandler& operator=(const AliMDCInterruptHandler& handler);
86 AliRawEvent *fEvent; // produced AliRawEvent
87 AliESD *fESD; // pointer to HLT ESD object
88 AliStats *fStats; // statistics
89 AliRawDB *fRawDB; // raw data DB
90 AliRunDB *fRunDB; // run DB
91 AliTagDB *fTagDB; // tag DB
92 Int_t fCompress; // compression factor used for raw output DB
93 Bool_t fDeleteFiles; // flag for deletion of files
94 EFilterMode fFilterMode; // high level filter mode
95 TObjArray fFilters; // filter algorithms
96 Bool_t fStop; // stop execution (triggered by SIGUSR1)
100 static const char* const fgkFilterName[kNFilters];
102 AliMDC(const AliMDC& mdc);
103 AliMDC& operator = (const AliMDC& mdc);
105 Int_t Read(const char *name) { return TObject::Read(name); }
106 Int_t Read(Int_t fd, void *buffer, Int_t length);
107 Int_t ReadHeader(AliRawEventHeader &header, char*& data);
108 Int_t ReadEquipmentHeader(AliRawEquipmentHeader &header,
109 Bool_t isSwapped, char*& data);
110 Int_t ReadRawData(AliRawData &raw, Int_t size, char*& data);
112 ClassDef(AliMDC,0) // MDC processor