]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/MUON/AliHLTMUONMansoCandidatesBlockStruct.h
Adding the target_link_libraries
[u/mrichter/AliRoot.git] / HLT / MUON / AliHLTMUONMansoCandidatesBlockStruct.h
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         return a.fX == b.fX and a.fY == b.fY and a.fZ == b.fZ
104                 and a.fRadius == b.fRadius;
105 }
106
107 inline bool operator == (
108                 const AliHLTMUONMansoCandidateStruct& a,
109                 const AliHLTMUONMansoCandidateStruct& b
110         )
111 {
112         return a.fTrack == b.fTrack
113                 and a.fRoI[0] == b.fRoI[0] and a.fRoI[1] == b.fRoI[1]
114                 and a.fRoI[2] == b.fRoI[2] and a.fRoI[3] == b.fRoI[3]
115                 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         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