Using common loading methods for CDB entries that take care of missing subversion...
[u/mrichter/AliRoot.git] / HLT / MUON / AliHLTMUONRecHitsBlockStruct.h
CommitLineData
26a4668d 1#ifndef ALIHLTMUONRECHITSBLOCKSTRUCT_H
2#define ALIHLTMUONRECHITSBLOCKSTRUCT_H
6845529b 3/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
26a4668d 5
1d8ae082 6// $Id$
26a4668d 7
8/**
9 * @file AliHLTMUONRecHitsBlockStruct.h
10 * @author Indranil Das <indra.das@saha.ac.in>,
11 * Artur Szostak <artursz@iafrica.com>
83d66053 12 * @date 17 May 2007
6845529b 13 * @brief Definition of internal dimuon HLT reconstructed hit data block structure.
1d8ae082 14 *
26a4668d 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
21extern "C"
22{
23
24/**
25 * A 3D reconstructed hit point structure.
26 * These are used to store the hits reconstructed on the tracking or trigger
27 * chambers.
28 * Reconstructed hit values of (0, 0, 0) indicate an invalid or nil hit.
29 */
30struct AliHLTMUONRecHitStruct
31{
a090ff22 32 // The flags word constains the following bit fields (bit 31 is most
33 // significant):
34 //
35 // bits: [ 31 -- 16 ][ 15 -- 12 ][ 11 --- 0 ]
36 // field: reserved chamber detElemId
37 //
38 // Where we have,
39 // reserved bits must be set to zero.
40 // chamber - specifies the chamber number in the range [0..13], 0xF for invalid.
41 // detElemId - specifies the detector element ID number.
42 AliHLTUInt32_t fFlags;
43
26a4668d 44 AliHLTFloat32_t fX; // X coordinate.
45 AliHLTFloat32_t fY; // Y coordinate.
46 AliHLTFloat32_t fZ; // Z coordinate.
47};
48
49/**
50 * AliHLTMUONRecHitsBlockStruct defines the format of the internal
51 * reconstructed hit data block.
52 */
53struct AliHLTMUONRecHitsBlockStruct
54{
6845529b 55 AliHLTMUONDataBlockHeader fHeader; // Common data block header
56
57 // Array of reconstructed hits.
23ad6161 58 //AliHLTMUONRecHitStruct fHit[/*fHeader.fNrecords*/];
26a4668d 59};
60
61} // extern "C"
62
63
64/**
65 * Stream operator for usage with std::ostream classes which prints the
66 * reconstructed hit in the following format: {fX = xx, fY = yy, fZ = zz}
67 */
68inline std::ostream& operator << (
69 std::ostream& stream, const AliHLTMUONRecHitStruct& hit
70 )
71{
710ddf4b 72 std::ios::fmtflags oldflags = stream.flags();
a090ff22 73 stream << "{fFlags = " << std::showbase << std::hex
74 << hit.fFlags << std::dec << ", fX = " << hit.fX
75 << ", fY = " << hit.fY << ", fZ = " << hit.fZ << "}";
710ddf4b 76 stream.flags(oldflags);
26a4668d 77 return stream;
78}
79
80/**
81 * Stream operator for usage with std::ostream classes which prints the
82 * AliHLTMUONRecHitsBlockStruct in the following format:
6845529b 83 * {fHeader = xx, fHit[] = [{..}, {..}, ...]}
26a4668d 84 */
6845529b 85std::ostream& operator << (
26a4668d 86 std::ostream& stream, const AliHLTMUONRecHitsBlockStruct& block
6845529b 87 );
26a4668d 88
89
90inline bool operator == (
91 const AliHLTMUONRecHitStruct& a, const AliHLTMUONRecHitStruct& b
92 )
93{
a090ff22 94 return a.fFlags == b.fFlags and a.fX == b.fX and a.fY == b.fY and a.fZ == b.fZ;
26a4668d 95}
96
97inline bool operator != (
98 const AliHLTMUONRecHitStruct& a, const AliHLTMUONRecHitStruct& b
99 )
100{
101 return not operator == (a, b);
102}
103
104
6845529b 105bool operator == (
106 const AliHLTMUONRecHitsBlockStruct& a,
107 const AliHLTMUONRecHitsBlockStruct& b
108 );
26a4668d 109
110inline bool operator != (
6845529b 111 const AliHLTMUONRecHitsBlockStruct& a,
112 const AliHLTMUONRecHitsBlockStruct& b
26a4668d 113 )
114{
115 return not operator == (a, b);
116}
117
118#endif // ALIHLTMUONRECHITSBLOCKSTRUCT_H