Line data Source code
1 : #ifndef ALIHLTMUONMANSOCANDIDATESBLOCKSTRUCT_H
2 : #define ALIHLTMUONMANSOCANDIDATESBLOCKSTRUCT_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 AliHLTMUONMansoCandidatesBlockStruct.h
10 : * @author Artur Szostak <artursz@iafrica.com>
11 : * @date 21 May 2007
12 : * @brief Definition of internal dimuon HLT track candidates data block structure generated by the Manso algorithm.
13 : *
14 : * The structures are defined with C linkage since C generally gives us more
15 : * binary compatibility between compilers.
16 : */
17 :
18 : #include "AliHLTMUONMansoTracksBlockStruct.h"
19 :
20 : extern "C"
21 : {
22 :
23 : /**
24 : * Structure containing information about a region of interest (RoI) used in
25 : * the Manso algorithm to find track candidates.
26 : */
27 : struct AliHLTMUONMansoRoIStruct
28 : {
29 : AliHLTFloat32_t fX; // The X coordinate for the RoI disc centre.
30 : AliHLTFloat32_t fY; // The Y coordinate for the RoI disc centre.
31 : AliHLTFloat32_t fZ; // The detection plane Z coordinate in which the RoI is in.
32 : AliHLTFloat32_t fRadius; // The radius of the RoI disc.
33 : };
34 :
35 : /**
36 : * This structure contains information about a track candidate that was attempted
37 : * during track reconstruction in the Manso algorithm. The regions of interests
38 : * used are indicated including the partially reconstructed track.
39 : */
40 : struct AliHLTMUONMansoCandidateStruct
41 : {
42 : // The partially of fully reconstructed track.
43 : AliHLTMUONMansoTrackStruct fTrack;
44 :
45 : // The regions of interest searched on the various chambers.
46 : // fRoI[0] is region of interest on chamber 7, fRoI[1] is on 8 etc...
47 : AliHLTMUONMansoRoIStruct fRoI[4];
48 :
49 : // The parameters used for momentum estimation:
50 : AliHLTFloat32_t fZmiddle; // Z position in the middle of the magnetic field in centimetres.
51 : AliHLTFloat32_t fBl; // The integrated magnetic field in (T.m) tesla metres.
52 : };
53 :
54 : /**
55 : * AliHLTMUONMansoCandidatesBlockStruct defines the format of the internal
56 : * Manso track candidates data block.
57 : */
58 : struct AliHLTMUONMansoCandidatesBlockStruct
59 : {
60 : AliHLTMUONDataBlockHeader fHeader; // Common data block header.
61 :
62 : // Array of Manso track candidates.
63 : //AliHLTMUONMansoCandidateStruct fCandidate[/*fHeader.fNrecords*/];
64 : };
65 :
66 : } // extern "C"
67 :
68 :
69 : /**
70 : * Stream operator for usage with std::ostream classes which prints the RoI
71 : * information in the following format:
72 : * {fX = xx, fY = yy, fZ = zz, fRadius = rr}
73 : */
74 : std::ostream& operator << (
75 : std::ostream& stream, const AliHLTMUONMansoRoIStruct& roi
76 : );
77 :
78 : /**
79 : * Stream operator for usage with std::ostream classes which prints the track
80 : * candidate information in the following format:
81 : * {fTrack = xx, fRoI[0] = {...}, fRoI[1] = {...}, fRoI[2] = {...}, fRoI[3] = {...}, fZmiddle = yy, fBl = zz}
82 : */
83 : std::ostream& operator << (
84 : std::ostream& stream, const AliHLTMUONMansoCandidateStruct& candidate
85 : );
86 :
87 : /**
88 : * Stream operator for usage with std::ostream classes which prints the
89 : * AliHLTMUONMansoCandidatesBlockStruct in the following format:
90 : * {fHeader = xx, fCandidate[] = [{..}, {..}, ...]}
91 : */
92 : std::ostream& operator << (
93 : std::ostream& stream,
94 : const AliHLTMUONMansoCandidatesBlockStruct& block
95 : );
96 :
97 :
98 : inline bool operator == (
99 : const AliHLTMUONMansoRoIStruct& a,
100 : const AliHLTMUONMansoRoIStruct& b
101 : )
102 : {
103 0 : return a.fX == b.fX and a.fY == b.fY and a.fZ == b.fZ
104 0 : and a.fRadius == b.fRadius;
105 : }
106 :
107 : inline bool operator == (
108 : const AliHLTMUONMansoCandidateStruct& a,
109 : const AliHLTMUONMansoCandidateStruct& b
110 : )
111 : {
112 0 : return a.fTrack == b.fTrack
113 0 : and a.fRoI[0] == b.fRoI[0] and a.fRoI[1] == b.fRoI[1]
114 0 : and a.fRoI[2] == b.fRoI[2] and a.fRoI[3] == b.fRoI[3]
115 0 : and a.fZmiddle == b.fZmiddle and a.fBl == b.fBl;
116 : }
117 :
118 : inline bool operator != (
119 : const AliHLTMUONMansoCandidateStruct& a,
120 : const AliHLTMUONMansoCandidateStruct& b
121 : )
122 : {
123 0 : return not operator == (a, b);
124 : }
125 :
126 :
127 : bool operator == (
128 : const AliHLTMUONMansoCandidatesBlockStruct& a,
129 : const AliHLTMUONMansoCandidatesBlockStruct& b
130 : );
131 :
132 : inline bool operator != (
133 : const AliHLTMUONMansoCandidatesBlockStruct& a,
134 : const AliHLTMUONMansoCandidatesBlockStruct& b
135 : )
136 : {
137 : return not operator == (a, b);
138 : }
139 :
140 : #endif // ALIHLTMUONMANSOCANDIDATESBLOCKSTRUCT_H
|