1 #ifndef ALIHLTMUONCLUSTERSBLOCKSTRUCT_H
2 #define ALIHLTMUONCLUSTERSBLOCKSTRUCT_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
9 * @file AliHLTMUONClustersBlockStruct.h
10 * @author Artur Szostak <artursz@iafrica.com>
12 * @brief Definition of internal dimuon HLT block structure.
14 * The structure contains extra information about a cluster and its corresponding
15 * reconstructed hit, such as total charge and number of channels.
16 * The individual channel information is contained in AliHLTMUONChannelStruct structures.
17 * The extra information is useful for debugging purposes.
19 * The structures are defined with C linkage since C generally gives us more
20 * binary compatibility between compilers.
23 #include "AliHLTMUONDataTypes.h"
24 #include "AliHLTMUONRecHitsBlockStruct.h"
31 * Extra debugging information about a cluster and its reconstructed hit.
33 struct AliHLTMUONClusterStruct
35 AliHLTInt32_t fId; // Unique ID for the cluster. It must be at
36 // least unique for any given event. -1 == invalid.
38 AliHLTMUONRecHitStruct fHit; // Corresponding reconstructed hit.
40 AliHLTInt32_t fDetElemId; // Detector ID number from AliRoot geometry
41 // on which the cluster was found.
43 AliHLTUInt16_t fNchannelsB; // Number of channels/pads in the cluster in bending plane.
44 AliHLTUInt16_t fNchannelsNB; // Number of channels/pads in the cluster in non-bending plane.
46 AliHLTFloat32_t fChargeB; // Cluster charge in bending plane. Can be -1 if invalid or uncomputed.
47 AliHLTFloat32_t fChargeNB; // Cluster charge in non-bending plane. Can be -1 if invalid or uncomputed.
51 * AliHLTMUONClusterBlockStruct defines the format of the internal cluster
54 struct AliHLTMUONClustersBlockStruct
56 AliHLTMUONDataBlockHeader fHeader; // Common data block header
59 //AliHLTMUONClusterStruct fCluster[/*fHeader.fNrecords*/];
66 * Stream operator for usage with std::ostream classes which prints the
67 * AliHLTMUONClusterStruct in the following format:
68 * {fId = xx, fHit = {...}, fDetElemId = yy, fNchannels = zz}
70 std::ostream& operator << (
71 std::ostream& stream, const AliHLTMUONClusterStruct& cluster
75 * Stream operator for usage with std::ostream classes which prints the
76 * AliHLTMUONClustersBlockStruct in the following format:
77 * {fHeader = xx, fCluster[] = [{..}, {..}, ...]}
79 std::ostream& operator << (
80 std::ostream& stream, const AliHLTMUONClustersBlockStruct& block
84 inline bool operator == (
85 const AliHLTMUONClusterStruct& a,
86 const AliHLTMUONClusterStruct& b
89 return a.fId == b.fId and a.fHit == b.fHit and
90 a.fDetElemId == b.fDetElemId and a.fNchannelsB == b.fNchannelsB and
91 a.fNchannelsNB == b.fNchannelsNB and a.fChargeB == b.fChargeB and
92 a.fChargeNB == b.fChargeNB;
95 inline bool operator != (
96 const AliHLTMUONClusterStruct& a,
97 const AliHLTMUONClusterStruct& b
100 return not operator == (a, b);
105 const AliHLTMUONClustersBlockStruct& a,
106 const AliHLTMUONClustersBlockStruct& b
109 inline bool operator != (
110 const AliHLTMUONClustersBlockStruct& a,
111 const AliHLTMUONClustersBlockStruct& b
114 return not operator == (a, b);
117 #endif // ALIHLTMUONCLUSTERSBLOCKSTRUCT_H