Line data Source code
1 : #ifndef ALIHLTMUONCHANNELSBLOCKSTRUCT_H
2 : #define ALIHLTMUONCHANNELSBLOCKSTRUCT_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 AliHLTMUONChannelsBlockStruct.h
10 : /// @author Artur Szostak <artursz@iafrica.com>
11 : /// @date 18 May 2007
12 : /// @brief Definition of internal dHLT channels block structure corresponding to clusters.
13 : ///
14 : /// The structures are defined with C linkage since C generally gives us more
15 : /// binary compatibility between compilers.
16 : ///
17 :
18 : #include "AliHLTMUONDataTypes.h"
19 : #include <ostream>
20 :
21 : extern "C"
22 : {
23 :
24 : /**
25 : * Gives the fired channel/pad information which was considered during
26 : * hit reconstruction and correlated into a common cluster.
27 : */
28 : struct AliHLTMUONChannelStruct
29 : {
30 : AliHLTInt32_t fClusterId; // ID corresponding to the cluster this
31 : // channel is part of. -1 == invalid.
32 :
33 : AliHLTUInt16_t fBusPatch; // Bus patch to which this is connected.
34 : AliHLTUInt16_t fManu; // The MANU address on electronics.
35 : AliHLTUInt16_t fChannelAddress; // The channel address on electronics.
36 : AliHLTUInt16_t fSignal; // ADC value of signal.
37 : AliHLTUInt32_t fRawDataWord; // The raw data word as found in the DDL stream.
38 : };
39 :
40 : /**
41 : * AliHLTMUONChannelBlockStruct defines the format of the internal channel
42 : * data block corresponding to clusters on the tracking chambers.
43 : */
44 : struct AliHLTMUONChannelsBlockStruct
45 : {
46 : AliHLTMUONDataBlockHeader fHeader; // Common data block header
47 :
48 : // Array of cluster channels/pads.
49 : //AliHLTMUONChannelStruct fChannel[/*fHeader.fNrecords*/];
50 : };
51 :
52 : } // extern "C"
53 :
54 :
55 : /**
56 : * Stream operator for usage with std::ostream classes which prints the
57 : * AliHLTMUONChannelStruct in the following format:
58 : * {fClusterId = xx, fBusPatch = yy, fManu = zz, fChannelAddress = uu, fSignal = ww,
59 : * fRawDataWord = 0xXXXXXXXX}
60 : */
61 : std::ostream& operator << (
62 : std::ostream& stream, const AliHLTMUONChannelStruct& channel
63 : );
64 :
65 : /**
66 : * Stream operator for usage with std::ostream classes which prints the
67 : * AliHLTMUONChannelsBlockStruct in the following format:
68 : * {fHeader = xx, fChannel[] = [{..}, {..}, ...]}
69 : */
70 : std::ostream& operator << (
71 : std::ostream& stream, const AliHLTMUONChannelsBlockStruct& block
72 : );
73 :
74 :
75 : inline bool operator == (
76 : const AliHLTMUONChannelStruct& a,
77 : const AliHLTMUONChannelStruct& b
78 : )
79 : {
80 0 : return a.fClusterId == b.fClusterId and a.fBusPatch == b.fBusPatch and
81 0 : a.fManu == b.fManu and a.fChannelAddress == b.fChannelAddress and
82 0 : a.fSignal == b.fSignal and a.fRawDataWord == b.fRawDataWord;
83 : }
84 :
85 : inline bool operator != (
86 : const AliHLTMUONChannelStruct& a,
87 : const AliHLTMUONChannelStruct& b
88 : )
89 : {
90 0 : return not operator == (a, b);
91 : }
92 :
93 :
94 : bool operator == (
95 : const AliHLTMUONChannelsBlockStruct& a,
96 : const AliHLTMUONChannelsBlockStruct& b
97 : );
98 :
99 : inline bool operator != (
100 : const AliHLTMUONChannelsBlockStruct& a,
101 : const AliHLTMUONChannelsBlockStruct& b
102 : )
103 : {
104 : return not operator == (a, b);
105 : }
106 :
107 : #endif // ALIHLTMUONCHANNELSBLOCKSTRUCT_H
|