1 #ifndef ALIHLTMUONTRIGRECSDEBUGBLOCKSTRUCT_H
2 #define ALIHLTMUONTRIGRECSDEBUGBLOCKSTRUCT_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
9 * @file AliHLTMUONTrigRecsDebugBlockStruct.h
10 * @author Artur Szostak <artursz@iafrica.com>
12 * @brief Definition of internal dimuon HLT data structures for storing debugging
13 * information about trigger records.
15 * The structures are defined with C linkage since C generally gives us more
16 * binary compatibility between compilers.
19 #include "AliHLTMUONDataTypes.h"
20 #include "AliMUONTriggerDDLDecoderEventHandler.h"
26 * Debug trigger record structures contain debug information about the trigger
27 * records that were decoded from the dimuon hardware trigger electronics.
29 struct AliHLTMUONTrigRecInfoStruct
31 AliHLTInt32_t fTrigRecId; // The corresponding trigger record ID this
32 // debug information corresponds to. -1 == invalid.
34 AliHLTInt32_t fDetElemId[4]; // Detector ID numbers from AliRoot geometry
35 // on which the hit clusters were found.
36 // fDetElemId[0] is for chamber 11, fDetElemId[1]
37 // for chamber 12 etc.
39 // The parameters used for momentum estimation:
40 AliHLTFloat32_t fZmiddle; // Z position in the middle of the magnetic field in centimetres.
41 AliHLTFloat32_t fBl; // The integrated magnetic field in (T.m) tesla metres.
43 AliMUONLocalInfoStruct fL0Struct; // Copy of the L0 local trigger structure bits.
47 * AliHLTMUONTrigRecsDebugBlockStruct defines the format of the internal
48 * data block for storing debugging information for trigger records.
50 struct AliHLTMUONTrigRecsDebugBlockStruct
52 AliHLTMUONDataBlockHeader fHeader; // Common data block header
54 // Array of trigger records.
55 //AliHLTMUONTrigRecInfoStruct fTrigRecInfo[/*fHeader.fNrecords*/];
62 * Stream operator for usage with std::ostream classes which prints the trigger
63 * record debug information in the following format:
64 * {fTrigRecId = xx, fDetElemId = [aa, bb, cc, dd], fZmiddle = yy, fBl = zz}
66 std::ostream& operator << (
67 std::ostream& stream, const AliHLTMUONTrigRecInfoStruct& info
71 * Stream operator for usage with std::ostream classes which prints the
72 * AliHLTMUONTrigRecsDebugBlockStruct in the following format:
73 * {fHeader = xx, fTrigRecInfo[] = [{..}, {..}, ...]}
75 std::ostream& operator << (
76 std::ostream& stream, const AliHLTMUONTrigRecsDebugBlockStruct& block
80 inline bool operator == (
81 const AliHLTMUONTrigRecInfoStruct& a,
82 const AliHLTMUONTrigRecInfoStruct& b
85 return a.fTrigRecId == b.fTrigRecId and a.fDetElemId == b.fDetElemId
86 and a.fZmiddle == b.fZmiddle and a.fBl == b.fBl
87 and a.fL0Struct.fX2X1 == b.fL0Struct.fX2X1
88 and a.fL0Struct.fX4X3 == b.fL0Struct.fX4X3
89 and a.fL0Struct.fY2Y1 == b.fL0Struct.fY2Y1
90 and a.fL0Struct.fY4Y3 == b.fL0Struct.fY4Y3
91 and a.fL0Struct.fTriggerBits == b.fL0Struct.fTriggerBits;
94 inline bool operator != (
95 const AliHLTMUONTrigRecInfoStruct& a,
96 const AliHLTMUONTrigRecInfoStruct& b
99 return not operator == (a, b);
104 const AliHLTMUONTrigRecsDebugBlockStruct& a,
105 const AliHLTMUONTrigRecsDebugBlockStruct& b
108 inline bool operator != (
109 const AliHLTMUONTrigRecsDebugBlockStruct& a,
110 const AliHLTMUONTrigRecsDebugBlockStruct& b
113 return not operator == (a, b);
116 #endif // ALIHLTMUONTRIGRECSDEBUGBLOCKSTRUCT_H