]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RAW/AliMDC.h
Set Probabilities to zero if there is no signal in any plane
[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;
a197a4ce 29class AliRawEventHeader;
30class AliRawEquipmentHeader;
31class AliRawData;
e10815f1 32class AliRawDB;
33class AliRunDB;
34class AliTagDB;
35class AliStats;
a109e73e 36class AliESD;
a197a4ce 37
38class AliMDC : public TObject {
39
40public:
41 enum EWriteMode { kLOCAL, kRFIO, kROOTD, kCASTOR, kDEVNULL };
e10815f1 42 enum EFilterMode { kFilterOff, kFilterTransparent, kFilterOn };
43 enum EErrorCode { kFilterReject = 0,
44 kErrStartEndRun = -1,
45 kErrHeader = -2,
46 kErrHeaderSize = -3,
47 kErrSubHeader = -4,
48 kErrDataSize = -5,
49 kErrEquipmentHeader = -6,
50 kErrEquipment = -7 };
51
52 AliMDC(Int_t compress, Bool_t deleteFiles,
53 EFilterMode filterMode = kFilterTransparent,
54 const char* localRunDB = NULL, Bool_t rdbmsRunDB = kFALSE,
55 const char* alienHostRunDB = NULL, const char* alienDirRunDB = NULL,
56 Double_t maxSizeTagDB = -1, const char* fileNameTagDB = NULL);
57 virtual ~AliMDC();
58
59 Int_t Open(EWriteMode mode, const char* fileName);
60 Int_t ProcessEvent(void* event, Bool_t isIovecArray = kFALSE);
61 Int_t Close();
62
63 Int_t Run(const char* inputFile, Bool_t loop,
64 EWriteMode mode, Double_t maxFileSize,
65 const char* fs1 = NULL, const char* fs2 = NULL);
66 void Stop();
a197a4ce 67
68private:
69 class AliMDCInterruptHandler : public TSignalHandler {
70 public:
71 AliMDCInterruptHandler(AliMDC *mdc) : TSignalHandler(kSigUser1, kFALSE), fMDC(mdc) { }
72 Bool_t Notify() {
73 Info("Notify", "received a SIGUSR1 signal");
e10815f1 74 fMDC->Stop();
a197a4ce 75 return kTRUE;
76 }
77 private:
78 AliMDC *fMDC; // alimdc to signal
79
80 AliMDCInterruptHandler(const AliMDCInterruptHandler& handler);
81 AliMDCInterruptHandler& operator=(const AliMDCInterruptHandler& handler);
82 };
83
e10815f1 84 AliRawEvent *fEvent; // produced AliRawEvent
85 AliESD *fESD; // pointer to HLT ESD object
86 AliStats *fStats; // statistics
87 AliRawDB *fRawDB; // raw data DB
88 AliRunDB *fRunDB; // run DB
89 AliTagDB *fTagDB; // tag DB
90 Int_t fCompress; // compression factor used for raw output DB
91 Bool_t fDeleteFiles; // flag for deletion of files
92 EFilterMode fFilterMode; // high level filter mode
93 TObjArray fFilters; // filter algorithms
94 Bool_t fStop; // stop execution (triggered by SIGUSR1)
95
96 // Filter names
97 enum {kNFilters = 1};
98 static const char* const fgkFilterName[kNFilters];
a197a4ce 99
100 AliMDC(const AliMDC& mdc);
101 AliMDC& operator = (const AliMDC& mdc);
102
103 Int_t Read(const char *name) { return TObject::Read(name); }
e10815f1 104 Int_t Read(Int_t fd, void *buffer, Int_t length);
105 Int_t ReadHeader(AliRawEventHeader &header, char*& data);
a197a4ce 106 Int_t ReadEquipmentHeader(AliRawEquipmentHeader &header,
e10815f1 107 Bool_t isSwapped, char*& data);
108 Int_t ReadRawData(AliRawData &raw, Int_t size, char*& data);
a197a4ce 109
110 ClassDef(AliMDC,0) // MDC processor
111};
112
113#endif