ALIROOT-5433 Transition to CDHv3 in HLT
[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         AliMUONLocalInfoStruct fL0StructPrev;  // Copy of the previous L0 local trigger structure bits used. Can be zero if none used.
45         AliMUONLocalInfoStruct fL0StructNext;  // Copy of the next L0 local trigger structure bits used. Can be zero if none used.
46 };
47
48 /**
49  * AliHLTMUONTrigRecsDebugBlockStruct defines the format of the internal
50  * data block for storing debugging information for trigger records.
51  */
52 struct AliHLTMUONTrigRecsDebugBlockStruct
53 {
54         AliHLTMUONDataBlockHeader fHeader; // Common data block header
55
56         // Array of trigger records.
57         //AliHLTMUONTrigRecInfoStruct fTrigRecInfo[/*fHeader.fNrecords*/];
58 };
59
60 } // extern "C"
61
62
63 /**
64  * Stream operator for usage with std::ostream classes which prints the trigger
65  * record debug information in the following format:
66  *  {fTrigRecId = xx, fDetElemId = [aa, bb, cc, dd], fZmiddle = yy, fBl = zz}
67  */
68 std::ostream& operator << (
69                 std::ostream& stream, const AliHLTMUONTrigRecInfoStruct& info
70         );
71
72 /**
73  * Stream operator for usage with std::ostream classes which prints the
74  * AliHLTMUONTrigRecsDebugBlockStruct in the following format:
75  *   {fHeader = xx, fTrigRecInfo[] = [{..}, {..}, ...]}
76  */
77 std::ostream& operator << (
78                 std::ostream& stream, const AliHLTMUONTrigRecsDebugBlockStruct& block
79         );
80
81
82 bool operator == (
83                 const AliHLTMUONTrigRecInfoStruct& a,
84                 const AliHLTMUONTrigRecInfoStruct& b
85         );
86
87 inline bool operator != (
88                 const AliHLTMUONTrigRecInfoStruct& a,
89                 const AliHLTMUONTrigRecInfoStruct& b
90         )
91 {
92         return not operator == (a, b);
93 }
94
95
96 bool operator == (
97                 const AliHLTMUONTrigRecsDebugBlockStruct& a,
98                 const AliHLTMUONTrigRecsDebugBlockStruct& b
99         );
100
101 inline bool operator != (
102                 const AliHLTMUONTrigRecsDebugBlockStruct& a,
103                 const AliHLTMUONTrigRecsDebugBlockStruct& b
104         )
105 {
106         return not operator == (a, b);
107 }
108
109 #endif // ALIHLTMUONTRIGRECSDEBUGBLOCKSTRUCT_H