]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/MUON/AliHLTMUONTrigRecsDebugBlockStruct.h
Improving documentation and macros.
[u/mrichter/AliRoot.git] / HLT / MUON / AliHLTMUONTrigRecsDebugBlockStruct.h
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                               */
5
6 // $Id$
7
8 /**
9  * @file   AliHLTMUONTrigRecsDebugBlockStruct.h
10  * @author Artur Szostak <artursz@iafrica.com>
11  * @date   19 May 2007
12  * @brief  Definition of internal dimuon HLT data structures for storing debugging
13  *         information about trigger records.
14  *
15  * The structures are defined with C linkage since C generally gives us more
16  * binary compatibility between compilers.
17  */
18
19 #include "AliHLTMUONDataTypes.h"
20 #include "AliMUONTriggerDDLDecoderEventHandler.h"
21
22 extern "C"
23 {
24
25 /**
26  * Debug trigger record structures contain debug information about the trigger
27  * records that were decoded from the dimuon hardware trigger electronics.
28  */
29 struct AliHLTMUONTrigRecInfoStruct
30 {
31         AliHLTInt32_t fTrigRecId; // The corresponding trigger record ID this
32                                   // debug information corresponds to. -1 == invalid.
33
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.
38
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.
42         
43         AliMUONLocalInfoStruct fL0Struct;  // Copy of the L0 local trigger structure bits.
44 };
45
46 /**
47  * AliHLTMUONTrigRecsDebugBlockStruct defines the format of the internal
48  * data block for storing debugging information for trigger records.
49  */
50 struct AliHLTMUONTrigRecsDebugBlockStruct
51 {
52         AliHLTMUONDataBlockHeader fHeader; // Common data block header
53
54         // Array of trigger records.
55         //AliHLTMUONTrigRecInfoStruct fTrigRecInfo[/*fHeader.fNrecords*/];
56 };
57
58 } // extern "C"
59
60
61 /**
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}
65  */
66 std::ostream& operator << (
67                 std::ostream& stream, const AliHLTMUONTrigRecInfoStruct& info
68         );
69
70 /**
71  * Stream operator for usage with std::ostream classes which prints the
72  * AliHLTMUONTrigRecsDebugBlockStruct in the following format:
73  *   {fHeader = xx, fTrigRecInfo[] = [{..}, {..}, ...]}
74  */
75 std::ostream& operator << (
76                 std::ostream& stream, const AliHLTMUONTrigRecsDebugBlockStruct& block
77         );
78
79
80 inline bool operator == (
81                 const AliHLTMUONTrigRecInfoStruct& a,
82                 const AliHLTMUONTrigRecInfoStruct& b
83         )
84 {
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;
92 }
93
94 inline bool operator != (
95                 const AliHLTMUONTrigRecInfoStruct& a,
96                 const AliHLTMUONTrigRecInfoStruct& b
97         )
98 {
99         return not operator == (a, b);
100 }
101
102
103 bool operator == (
104                 const AliHLTMUONTrigRecsDebugBlockStruct& a,
105                 const AliHLTMUONTrigRecsDebugBlockStruct& b
106         );
107
108 inline bool operator != (
109                 const AliHLTMUONTrigRecsDebugBlockStruct& a,
110                 const AliHLTMUONTrigRecsDebugBlockStruct& b
111         )
112 {
113         return not operator == (a, b);
114 }
115
116 #endif // ALIHLTMUONTRIGRECSDEBUGBLOCKSTRUCT_H