Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliDAQ.h
CommitLineData
42650ece 1#ifndef ALIDAQ_H
2#define ALIDAQ_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7//////////////////////////////////////////////////////////////////////////////
8// //
9// The AliDAQ class is responsible for handling all the information about //
10// Data Acquisition configuration. It defines the detector indexing, //
11// the number of DDLs and LDCs per detector. //
12// The number of LDCs per detector is used only in the simulation in order //
13// to define the configuration of the dateStream application. Therefore the //
14// numbers in the corresponding array can be changed without affecting the //
15// rest of the aliroot code. //
16// The equipment ID (DDL ID) is an integer (32-bit) number defined as: //
17// Equipment ID = (detectorID << 8) + DDLIndex //
18// where the detectorID is given by fgkDetectorName array and DDLIndex is //
19// the index of the corresponding DDL inside the detector partition. //
20// Due to DAQ/HLT limitations, the ddl indexes should be consequtive, or //
21// at least without big gaps in between. //
22// The sub-detector code use only this class in the simulation and reading //
23// of the raw data. //
24// //
25// cvetan.cheshkov@cern.ch 2006/06/09 //
26// //
27//////////////////////////////////////////////////////////////////////////////
28
29#include <TObject.h>
30
31class AliDAQ: public TObject {
32 public:
33
34 AliDAQ() {};
35 AliDAQ(const AliDAQ& source);
36 AliDAQ& operator = (const AliDAQ& source);
37 virtual ~AliDAQ() {};
38
39 static Int_t DetectorID(const char *detectorName);
40 static const char *DetectorName(Int_t detectorID);
41
42 static Int_t DdlIDOffset(const char *detectorName);
43 static Int_t DdlIDOffset(Int_t detectorID);
44
362c9d61 45 static const char *DetectorNameFromDdlID(Int_t ddlID, Int_t &ddlIndex);
46 static Int_t DetectorIDFromDdlID(Int_t ddlID, Int_t &ddlIndex);
42650ece 47
48 static Int_t DdlID(const char *detectorName, Int_t ddlIndex);
49 static Int_t DdlID(Int_t detectorID, Int_t ddlIndex);
cddbd913 50 static const char *DdlFileName(const char *detectorName, Int_t ddlIndex);
51 static const char *DdlFileName(Int_t detectorID, Int_t ddlIndex);
42650ece 52
53 static Int_t NumberOfDdls(const char *detectorName);
54 static Int_t NumberOfDdls(Int_t detectorID);
55
56 static Float_t NumberOfLdcs(const char *detectorName);
57 static Float_t NumberOfLdcs(Int_t detectorID);
58
0d45e170 59 static void PrintConfig();
60
7e88424f 61 static const char *ListOfTriggeredDetectors(UInt_t detectorPattern);
62 static UInt_t DetectorPattern(const char *detectorList);
7b649c02 63 static UInt_t DetectorPatternOffline(const char *detectorList);
7e88424f 64
65 static const char *OfflineModuleName(const char *detectorName);
66 static const char *OfflineModuleName(Int_t detectorID);
67
68 static const char *OnlineName(const char *detectorName);
69 static const char *OnlineName(Int_t detectorID);
1d3b4f15 70
42650ece 71 enum {
7034c7a7 72 kNDetectors = 21, // Number of detectors
73 kHLTId = 30 // HLT detector index
42650ece 74 };
75
7b649c02 76 enum DetectorBits {kSPD = 0x0001, kSDD = 0x0002, kSSD = 0x0004, kITS = 0x0007,
77 kTPC = 0x0008, kTRD = 0x0010, kTOF = 0x0020, kHMPID = 0x0040,
78 kPHOS = 0x0080, kCPV = 0x0100, kPMD = 0x0200, kMUONTRK = 0x0400,
79 kMUONTRG = 0x0800, kMUON = 0x0c00, kFMD = 0x1000, kT0 = 0x2000, kVZERO = 0x4000,
80 kZDC = 0x8000, kACORDE = 0x10000, kTRG = 0x20000, kEMCAL = 0x40000,
81 kDAQTEST = 0x80000, kHLT = 0x40000000 };
82
42650ece 83 private:
84
85 static const char *fgkDetectorName[kNDetectors]; // Detector names
86 static Int_t fgkNumberOfDdls[kNDetectors]; // Number of DDLs per detector
87 static Float_t fgkNumberOfLdcs[kNDetectors]; // Number of LDCs per detector (not fixed - used only for the raw data simulation)
7e88424f 88 static const char* fgkOfflineModuleName[kNDetectors]; // Names of the offline modules corresponding to the detectors
89 static const char* fgkOnlineName[kNDetectors]; // Online (DAQ/ECS) detector names
42650ece 90
7e88424f 91 ClassDef(AliDAQ, 3) // ALICE DAQ Configuration class
42650ece 92};
93
94#endif