]> git.uio.no Git - u/mrichter/AliRoot.git/blame - RAW/AliRawDataHeaderV3.h
Including CINT1 trigger
[u/mrichter/AliRoot.git] / RAW / AliRawDataHeaderV3.h
CommitLineData
480f0332 1#ifndef ALIRAWDATAHEADERV3_H
2#define ALIRAWDATAHEADERV3_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6struct AliRawDataHeaderV3 {
7 AliRawDataHeaderV3() :
8 fSize(0xFFFFFFFF),
9 fWord2(3<<24),
10 fEventID2(0),
11 fAttributesSubDetectors(0),
12 fStatusMiniEventID(0x10000), // status bit 4: no L1/L2 trigger information
13 fTriggerClassLow(0),
14 fTriggerClassesMiddleLow(0),
15 fTriggerClassesMiddleHigh(0),
16 fROILowTriggerClassHigh(0),
17 fROIHigh(0)
18 {}
19
20 // Adding virtual destructor breaks
21 // C++ struct backward compatibility
22 // Do not uncomment the line below!!!
23 // virtual ~AliRawDataHeaderV3() {}
24
25 UShort_t GetEventID1() const
26 {
27 return (UShort_t)( fWord2 & 0xFFF );
28 };
29
30 UInt_t GetEventID2() const
31 {
32 return fEventID2;
33 };
34
35 UChar_t GetL1TriggerMessage() const
36 {
37 return (UChar_t)( (fWord2 >> 14) & 0xFF );
38 };
39
40 UChar_t GetVersion() const
41 {
42 return (UChar_t)( (fWord2 >> 24) & 0xFF );
43 };
44
45 UChar_t GetAttributes() const
46 {return (fAttributesSubDetectors >> 24) & 0xFF;};
47 Bool_t TestAttribute(Int_t index) const
48 {return (fAttributesSubDetectors >> (24 + index)) & 1;};
49 void SetAttribute(Int_t index)
50 {fAttributesSubDetectors |= (1 << (24 + index));};
51 void ResetAttribute(Int_t index)
52 {fAttributesSubDetectors &= (0xFFFFFFFF ^ (1 << (24 + index)));};
53 UInt_t GetSubDetectors() const
54 {return fAttributesSubDetectors & 0xFFFFFF;};
55
56 UInt_t GetStatus() const
57 {return (fStatusMiniEventID >> 12) & 0xFFFF;};
58 UInt_t GetMiniEventID() const
59 {return fStatusMiniEventID & 0xFFF;};
60
61 ULong64_t GetTriggerClasses() const
62 {return (((ULong64_t) (fTriggerClassesMiddleLow & 0x3FFFF)) << 32) | fTriggerClassLow;}
63 ULong64_t GetTriggerClassesNext50() const
64 {return (((ULong64_t) (fROILowTriggerClassHigh & 0x3FFFF)) << 32) | fTriggerClassesMiddleHigh;}
65 ULong64_t GetROI() const
66 {return (((ULong64_t) fROIHigh) << 4) | ((fROILowTriggerClassHigh >> 28) & 0xF);}
67
68 void SetTriggerClass(ULong64_t mask)
69 {fTriggerClassLow = (UInt_t)(mask & 0xFFFFFFFF); // low bits of trigger class
70 fTriggerClassesMiddleLow = (UInt_t)((mask >> 32) & 0x3FFFF); // low bits of ROI data (bits 28-31) and high bits of trigger class (bits 0-17)
71 };
72 void SetTriggerClassNext50(ULong64_t mask)
73 {fTriggerClassesMiddleHigh = (UInt_t)(mask & 0xFFFFFFFF); // low bits of trigger class
74 fROILowTriggerClassHigh = (UInt_t)((mask >> 32) & 0x3FFFF); // low bits of ROI data (bits 28-31) and high bits of trigger class (bits 0-17)
75 };
76
77 UInt_t fSize; // size of the raw data in bytes
78 UInt_t fWord2; // bunch crossing, L1 trigger message and fomrat version
79 UInt_t fEventID2; // orbit number
80 UInt_t fAttributesSubDetectors; // block attributes (bits 24-31) and participating sub detectors
81 UInt_t fStatusMiniEventID; // status & error bits (bits 12-27) and mini event ID (bits 0-11)
82 UInt_t fTriggerClassLow; // low bits of trigger class
83 UInt_t fTriggerClassesMiddleLow; // 18 bits go into eventTriggerPattern[1] (low), 14 bits are zeroes (cdhMBZ2)
84 UInt_t fTriggerClassesMiddleHigh; // Goes into eventTriggerPattern[1] (high) and [2] (low)
85 UInt_t fROILowTriggerClassHigh; // low bits of ROI data (bits 28-31) and high bits of trigger class (bits 0-17)
86 UInt_t fROIHigh; // high bits of ROI data
87};
88
89#endif