BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
Mdc/MdcTables/include/MdcTables/TrkTables.h
Go to the documentation of this file.
1#ifndef _TrkTables_h_
2#define _TrkTables_h_
3
4#include <iostream>
5#include <string>
6#include <vector>
7
8#include "MdcTables/MdcTables.h"
9
10using namespace std;
11
12//
13//*** Info. on tracks reconstructed in KalFitter. For each track 5 slots
14//*** are allocated to handle different mass hypotheses.
15//
16class MdcTrk_global; // what is the purpose of this class ???
17class MdcTrk_localz;
18class MdcTrk_localf;
19class MdcTrk_locall;
20class MdcRec_trk;
21class MdcTrk {
22public:
23 MdcTrk() : prekal( 0 ) {
24 for ( int i = 0; i < 5; i++ )
25 {
26 glob[i] = 0;
27 zero[i] = 0;
28 first[i] = 0;
29 last[i] = 0;
30 }
31 }
32
33 MdcTrk( const MdcTrk& rhs ) {
34 for ( int i = 0; i < 5; i++ )
35 {
36 glob[i] = rhs.glob[i];
37 zero[i] = rhs.zero[i];
38 first[i] = rhs.first[i];
39 last[i] = rhs.last[i];
40 }
41 prekal = rhs.prekal;
42 }
43
44 MdcTrk& operator=( const MdcTrk& rhs ) {
45
46 if ( this == &rhs ) return *this;
47 for ( int i = 0; i < 5; i++ )
48 {
49 glob[i] = rhs.glob[i];
50 zero[i] = rhs.zero[i];
51 first[i] = rhs.first[i];
52 last[i] = rhs.last[i];
53 }
54 prekal = rhs.prekal;
55
56 return *this;
57 }
58
59public:
60 int id;
63 MdcTrk_localf* first[5];
66
67private:
68};
69
70class MdcTrkCol {
71public:
72 static vector<MdcTrk>* getMdcTrkCol( void );
73
74private:
75 static vector<MdcTrk>* s_col;
76};
77
78//
79//*** Track fit results indep. of position. ***
80//
81class MdcTrk_global {
82public:
84 id = 0;
85 mass = 0.0;
86 pathl = 0.0;
87 tof = 0.0;
88 pathl_rd = 0.0;
89 pathl_ab = 0.0;
90
91 for ( int i = 0; i < 5; i++ )
92 {
93 if ( i < 2 ) stat[i] = 0;
94 if ( i < 3 )
95 {
96 chisq[i] = 999;
97 ndf[i] = 0;
98 hit[i] = 0;
99 }
100 nhits[i] = 0;
101 }
102 }
103
105
106 id = rhs.id;
107 mass = rhs.mass;
108 pathl = rhs.pathl;
109 tof = rhs.tof;
110 pathl_rd = rhs.pathl_rd;
111 pathl_ab = rhs.pathl_ab;
112
113 for ( int i = 0; i < 5; i++ )
114 {
115 if ( i < 2 ) stat[i] = rhs.stat[i];
116 if ( i < 3 )
117 {
118 chisq[i] = rhs.chisq[i];
119 ndf[i] = rhs.ndf[i];
120 hit[i] = rhs.hit[i];
121 }
122 nhits[i] = rhs.nhits[i];
123 }
124 }
125
127
128 if ( this == &rhs ) return *this;
129 id = rhs.id;
130 mass = rhs.mass;
131 pathl = rhs.pathl;
132 tof = rhs.tof;
133 pathl_rd = rhs.pathl_rd;
134 pathl_ab = rhs.pathl_ab;
135
136 for ( int i = 0; i < 5; i++ )
137 {
138 if ( i < 2 ) stat[i] = rhs.stat[i];
139 if ( i < 3 )
140 {
141 chisq[i] = rhs.chisq[i];
142 ndf[i] = rhs.ndf[i];
143 hit[i] = rhs.hit[i];
144 }
145 nhits[i] = rhs.nhits[i];
146 }
147
148 return *this;
149 }
150
151public:
152 int id;
153 float mass;
154 float chisq[3];
155 int ndf[3];
156 float pathl;
157 float tof;
158 float pathl_rd;
159 float pathl_ab;
160 int stat[2];
161 int nhits[5];
162 int hit[3];
163};
164
165class MdcTrkGlobalCol {
166public:
167 static vector<MdcTrk_global>* getMdcTrkGlobalCol( void );
168
169private:
170 static vector<MdcTrk_global>* s_col;
171};
172
173//
174//*** Track fit results at near the coord. origin. ***
175//
176class MdcTrk_localz {
177public:
180 id = rhs.id;
181 for ( int i = 0; i < 15; i++ )
182 {
183 if ( i < 3 ) pivot[i] = rhs.pivot[i];
184 if ( i < 5 ) helix[i] = rhs.helix[i];
185 error[i] = rhs.error[i];
186 }
187 }
188
190
191 if ( this == &rhs ) return *this;
192 id = rhs.id;
193 for ( int i = 0; i < 15; i++ )
194 {
195 if ( i < 3 ) pivot[i] = rhs.pivot[i];
196 if ( i < 5 ) helix[i] = rhs.helix[i];
197 error[i] = rhs.error[i];
198 }
199
200 return *this;
201 }
202
203public:
204 int id;
205 float pivot[3];
206 float helix[5];
207 float error[15];
208};
209
210class MdcTrkLocalzCol {
211public:
212 static vector<MdcTrk_localz>* getMdcTrkLocalzCol( void );
213
214private:
215 static vector<MdcTrk_localz>* s_col;
216};
217
218//
219//*** Track fit results at the first hit point. ***
220//
221class MdcTrk_localf {
222public:
225 id = rhs.id;
226 for ( int i = 0; i < 15; i++ )
227 {
228 if ( i < 3 ) pivot[i] = rhs.pivot[i];
229 if ( i < 5 ) helix[i] = rhs.helix[i];
230 error[i] = rhs.error[i];
231 }
232 }
233
235
236 if ( this == &rhs ) return *this;
237 id = rhs.id;
238 for ( int i = 0; i < 15; i++ )
239 {
240 if ( i < 3 ) pivot[i] = rhs.pivot[i];
241 if ( i < 5 ) helix[i] = rhs.helix[i];
242 error[i] = rhs.error[i];
243 }
244
245 return *this;
246 }
247
248public:
249 int id;
250 float pivot[3];
251 float helix[5];
252 float error[15];
253};
254
255class MdcTrkLocalfCol {
256public:
257 static vector<MdcTrk_localf>* getMdcTrkLocalfCol( void );
258
259private:
260 static vector<MdcTrk_localf>* s_col;
261};
262
263//
264//*** Track fit results at the last hit point. ***
265//
266class MdcTrk_locall {
267public:
270 id = rhs.id;
271 for ( int i = 0; i < 15; i++ )
272 {
273 if ( i < 3 ) pivot[i] = rhs.pivot[i];
274 if ( i < 5 ) helix[i] = rhs.helix[i];
275 error[i] = rhs.error[i];
276 }
277 }
279
280 if ( this == &rhs ) return *this;
281 id = rhs.id;
282 for ( int i = 0; i < 15; i++ )
283 {
284 if ( i < 3 ) pivot[i] = rhs.pivot[i];
285 if ( i < 5 ) helix[i] = rhs.helix[i];
286 error[i] = rhs.error[i];
287 }
288
289 return *this;
290 }
291
292public:
293 int id;
294 float pivot[3];
295 float helix[5];
296 float error[15];
297};
298
299class MdcTrkLocallCol {
300public:
301 static vector<MdcTrk_locall>* getMdcTrkLocallCol( void );
302
303private:
304 static vector<MdcTrk_locall>* s_col;
305};
306
307//
308//*** V0 candidates. ***
309//
310class MdcTrk_v0 {
311public:
313
314public:
315 int id;
316 int kind;
317 MdcTrk* dau[2];
318 float vtx[3];
319 float P[5];
320 float fl;
321 float dz;
322 int type;
323};
324
325class MdcTrkV0Col {
326public:
327 static vector<MdcTrk_v0>* getMdcTrkV0Col( void );
328
329private:
330 static vector<MdcTrk_v0>* s_col;
331};
332
333//
334//*** V0 candidates; V0 info. after vtx-constrained fit***
335//
337class MdcTrk_v02 {
338public:
340
341public:
342 int id;
343 int kind;
344 MdcTrk* daut[2];
345 float P[4];
346 float vtx[3];
347 float dz;
348 float chisq;
349 int type;
351};
352
353class MdcTrkV02Col {
354public:
355 static vector<MdcTrk_v02>* getMdcTrkV02Col( void );
356
357private:
358 static vector<MdcTrk_v02>* s_col;
359};
360
361//
362//*** Track params. and error matrix of V0 daughters before the ***
363//*** vtx-constraint fit. They are defined at the V0 vtx-position. ***
364//
366public:
368
369public:
370 int id;
371 float helix_p[5];
372 float helix_m[5];
373 float error_p[15];
374 float error_m[15];
375};
376
378public:
379 static vector<MdcTrk_v0_daughters>* getMdcTrkV0DaughtersCol( void );
380
381private:
382 static vector<MdcTrk_v0_daughters>* s_col;
383};
384
385//
386//*** Path length in MDC for dEdx pid. ***
387//
388class MdcTrk_pathl {
389public:
390 MdcTrk_pathl() : trk( 0 ){};
392 id = rhs.id;
393 layer = rhs.layer;
394 trk = rhs.trk;
395 xin = rhs.xin;
396 yin = rhs.yin;
397 zin = rhs.zin;
398 xout = rhs.xout;
399 yout = rhs.yout;
400 zout = rhs.zout;
401 pathl = rhs.pathl;
402 px = rhs.px;
403 py = rhs.py;
404 pz = rhs.pz;
405 status = rhs.status;
406 return *this;
407 };
408
409 // MdcTrk_pathl(const MdcTrk_pathl& rhs){
410 // this = rhs;
411 // }
412public:
413 int id;
414 int layer;
415 MdcTrk* trk;
416 float xin;
417 float yin;
418 float zin;
419 float xout;
420 float yout;
421 float zout;
422 float pathl;
423 float px;
424 float py;
425 float pz;
426 int status;
427
428private:
429};
430
431class MdcTrkPathlCol {
432public:
433 static vector<MdcTrk_pathl>* getMdcTrkPathlCol( void );
434
435private:
436 static vector<MdcTrk_pathl>* s_col;
437};
438
439//
440//*** Info. on tracks found either in MDC+SVD combined system or in SVD only. ***
441//
442class MdcRec_trk_add;
443class MdcTrk_svd {
444public:
446
447public:
448 int id;
449 float Helix[5];
451 // svd_cluster[24];
452 int Status;
453};
454
455class MdcTrkSvdCol {
456public:
457 static vector<MdcTrk_svd>* getMdcTrkSvdCol( void );
458
459private:
460 static vector<MdcTrk_svd>* s_col;
461};
462
463//
464//*** Tof results for diff mass assumptions ***
465//
466class MdcTrk_tof {
467public:
468 MdcTrk_tof() : rectrk( 0 ){};
470 id = rhs.id;
471 rectrk = rhs.rectrk;
472 tof_k = rhs.tof_k;
473 tof_p = rhs.tof_p;
474 return *this;
475 };
476
477public:
478 int id;
479 MdcTrk* rectrk;
480 float tof;
481 float tof_k;
482 float tof_p;
483
484private:
485 // MdcTrk_tof(MdcTrk_tof &rhs);
486};
487
488class MdcTrkTofCol {
489public:
490 static vector<MdcTrk_tof>* getMdcTrkTofCol( void );
491
492private:
493 static vector<MdcTrk_tof>* s_col;
494};
495
496#endif // _TrkTables_h_
double P(RecMdcKalTrack *trk)
double mass
const DifNumber zero
static vector< MdcTrk > * getMdcTrkCol(void)
static vector< MdcTrk_global > * getMdcTrkGlobalCol(void)
static vector< MdcTrk_localf > * getMdcTrkLocalfCol(void)
static vector< MdcTrk_locall > * getMdcTrkLocallCol(void)
static vector< MdcTrk_localz > * getMdcTrkLocalzCol(void)
static vector< MdcTrk_pathl > * getMdcTrkPathlCol(void)
static vector< MdcTrk_svd > * getMdcTrkSvdCol(void)
static vector< MdcTrk_tof > * getMdcTrkTofCol(void)
static vector< MdcTrk_v02 > * getMdcTrkV02Col(void)
static vector< MdcTrk_v0 > * getMdcTrkV0Col(void)
static vector< MdcTrk_v0_daughters > * getMdcTrkV0DaughtersCol(void)
MdcTrk_global(const MdcTrk_global &rhs)
MdcTrk_global & operator=(const MdcTrk_global &rhs)
MdcTrk_localf & operator=(const MdcTrk_localf &rhs)
MdcTrk_localf(const MdcTrk_localf &rhs)
MdcTrk_locall(const MdcTrk_locall &rhs)
MdcTrk_locall & operator=(const MdcTrk_locall &rhs)
MdcTrk_localz(const MdcTrk_localz &rhs)
MdcTrk_localz & operator=(const MdcTrk_localz &rhs)
MdcTrk_pathl & operator=(MdcTrk_pathl &rhs)
MdcTrk_tof & operator=(MdcTrk_tof &rhs)
MdcTrk & operator=(const MdcTrk &rhs)