BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
Reconstruction/MdcFastTrkAlg/MdcFastTrkAlg-00-04-09/MdcFastTrkAlg/FTSuperLayer.h
Go to the documentation of this file.
1// -*- C++ -*-
2//
3// Package: MdcFastTrkAlg
4// Module: FTSuperLayer
5//
6// Description: super-layer class for MdcFastTrkAlg
7//
8// Usage:
9// <usage>
10//
11// Author: KAKUNO Hidekazu
12// Created: Wed Dec 1 20:20:53 JST 1999
13// $Id: FTSuperLayer.h,v 1.6 2011/02/18 04:44:03 maqm Exp $
14//
15// Revision history
16//
17// $Log: FTSuperLayer.h,v $
18// Revision 1.6 2011/02/18 04:44:03 maqm
19// slc5-x64-gcc43
20//
21// Revision 1.5 2008/12/09 04:44:33 lvxr
22// big update, see ChangeLog
23//
24// Revision 1.4 2006/09/26 12:23:17 max
25// see the ChangeLog
26//
27// Revision 1.3 2006/08/16 01:22:09 zoujh
28// See ChangeLog
29//
30// Revision 1.2 2006/06/23 08:38:53 zoujh
31// See ChangeLog
32//
33// Revision 1.1.1.1 2004/11/17 14:35:35 zhangxm
34// first version
35//
36// Revision 1.7 2002/02/26 21:52:20 kakuno
37// removal of unused variables and warning suppression
38//
39// Revision 1.6 2002/01/19 02:06:36 katayama
40// gcc3 compatibility
41//
42// Revision 1.5 2000/02/25 12:09:33 kakuno
43// MdcFastTrkAlg 1.5 release: modified to get better quality and to reduce CPU time
44//
45// Revision 1.4 2000/02/21 10:58:08 katayama
46// compatibility with gcc 2.95.2
47//
48// Revision 1.3 1999/12/06 08:36:33 kakuno
49// minor bug fixed
50//
51// Revision 1.2 1999/12/06 08:15:57 kakuno
52// MdcFastTrkAlg 1.1 release: dz resolution improved, primary vertex finder added
53//
54
55#ifndef FTSuperLayer_FLAG_
56#define FTSuperLayer_FLAG_
57
58#include <iostream>
59#include "MdcFastTrkAlg/FTList.h"
60#include "MdcFastTrkAlg/MdcParameter.h"
61
62class FTWire;
63class FTSegment;
64class FTFinder;
65class FTSuperLayer{
66public:
67 /// Constructors and destructor
68 FTSuperLayer(const int firstWireID,const int NWire,
69 const int firstLayerID,const int NLayer,
70 const int superLayerID);
72
73public:
74 /// clear object
75 void clear(void);
76
77 /// create segment lists
78 void mkSegmentList(void);
79
80 /// append wireHit to the list of hits
82
83 /// append segments which are not used for tracks to the list for salvage
84 void reAppendSalvage(void);
85
86 /// calculate t0 and Chi2 from segment-fit in every superlayer
87 void reduce_noise(FTList<float> (&Estime)[10]);
88
89public: // Selectors
90 /// returns wirehit list
92
93 /// returns segement list
95
96 /// returns number of wires
97 const int nWire(void) const;
98
99 /// returns number of layers
100 const int nLayer(void) const;
101
102 /// returns layer max ID
103 const int layerMaxId(void) const;
104
105 /// returns local max ID
106 const int localMaxId(void) const;
107
108 /// returns super-layer ID
109 const int superLayerId(void) const;
110
111 /// returns complecated segments
113
114 static MdcParameter * param;
115
116 static const float _maxDphi[11];
117
118private:
119 /// clustering of wire-hits
120 void clustering(void);
121
122 /// conect short clusters to make segments
123 void connect_short_segments(FTList<FTSegment *> & inner_short,
124 FTList<FTSegment *> & outer_short);
125
126 /// connect single wireHit to make segments
127 void connect_singleHit(FTList<FTSegment *> &);
128
129
130private: //static data members
131 //static const unsigned int _neighborsMask[6];
132
133private: // private data members
134 const int _superLayerId;
135 const int _firstLayerId;
136 const int _firstWireId;
137 const int _Nlayer;
138 const int _Nwire;
139 FTList<FTSegment *> * const _complecated_segments;
140 FTList<FTWire *>& _wireHits;
141 FTList<FTWire *>& _singleHits;
142 FTList<FTSegment *>& _segments;
143};
144
145
146//----------------------------------------------
147#ifdef FTSuperLayer_NO_INLINE
148#define inline
149#else
150#undef inline
151#define FTSuperLayer_INLINE_DEFINE_HERE
152#endif
153
154#ifdef FTSuperLayer_INLINE_DEFINE_HERE
155
156inline
157FTSuperLayer::FTSuperLayer(const int firstWireID,const int NWire,
158 const int firstLayerID,const int NLayer,
159 const int superLayerID)
160 : _superLayerId(superLayerID),
161 _firstLayerId(firstLayerID),
162 _firstWireId(firstWireID),
163 _Nlayer(NLayer),
164 _Nwire(NWire),
165 //_complecated_segments((superLayerID) ? NULL: new FTList<FTSegment *>(20)),
166 _complecated_segments(new FTList<FTSegment *>(20)),
167 _wireHits(*(new FTList<FTWire *>(500))),
168 _singleHits(*(new FTList<FTWire *>(100))),
169 _segments(*(new FTList<FTSegment *>(20)))
170{
171}
172
173inline
175{
176 clear();
177 delete &_wireHits;
178 delete &_singleHits;
179 delete &_segments;
180 if (_complecated_segments) delete _complecated_segments;
181}
182
183inline
185FTSuperLayer::wireHits(void) const{
186 return _wireHits;
187}
188
189inline
190const int
191FTSuperLayer::nWire(void) const{
192 return _Nwire;
193}
194
195inline
196const int
197FTSuperLayer::nLayer(void) const{
198 return _Nlayer;
199}
200
201inline
202const int
203FTSuperLayer::localMaxId(void) const{
204 return (_Nwire - 1);
205}
206
207inline
208const int
209FTSuperLayer::layerMaxId(void) const{
210 return (_Nlayer - 1);
211}
212
213inline
215FTSuperLayer::segments(void) const{
216 return _segments;
217}
218
219inline
220const int
222 return _superLayerId;
223}
224
225inline
228 return *_complecated_segments;
229}
230
231inline
232void
234 _wireHits.append(h);
235}
236
237#endif
238
239#undef inline
240
241#endif /* FTSuperLayer_FLAG_ */
242
int append(const T &x)
append an object into the end of the list
FTList< FTSegment * > & segments(void) const
returns segement list
const int nLayer(void) const
returns number of layers
const int layerMaxId(void) const
returns layer max ID
const int superLayerId(void) const
returns super-layer ID
FTList< FTWire * > & wireHits(void) const
returns wirehit list
void mkSegmentList(void)
create segment lists
const int nWire(void) const
returns number of wires
const int localMaxId(void) const
returns local max ID
FTList< FTSegment * > & complecated_segments(void)
returns complecated segments
void reduce_noise(FTList< float >(&Estime)[10])
calculate t0 and Chi2 from segment-fit in every superlayer
void appendHit(FTWire *)
append wireHit to the list of hits
void reAppendSalvage(void)
append segments which are not used for tracks to the list for salvage
void clear(void)
clear object
FTSuperLayer(const int firstWireID, const int NWire, const int firstLayerID, const int NLayer, const int superLayerID)
Constructors and destructor.