BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnDchTrackFinder.h
Go to the documentation of this file.
1// Author: Pavel Batyuk (VBLHEP) <pavel.batyuk@jinr.ru> 2017-01-21
2
3////////////////////////////////////////////////////////////////////////////////
4// //
5// BmnDchTrackFinder //
6// //
7// Implementation of an algorithm developed by //
8// N.Voytishin and V.Paltchik (LIT) //
9// to the BmnRoot software //
10// //
11// The algorithm serves for searching for track segments //
12// in the Drift Chambers of the BM@N experiment //
13// //
14////////////////////////////////////////////////////////////////////////////////
15
16#ifndef BMNDCHTRACKFINDER_H
17#define BMNDCHTRACKFINDER_H 1
18
19#include "BmnDchDigit.h"
20#include "BmnDchHit.h"
21#include "BmnDchHitProducer.h"
22#include "BmnDchTrack.h"
23#include "BmnMath.h"
24#include "FairMCPoint.h"
25#include "FairTask.h"
26#include "FairTrackParam.h"
27#include "TH1F.h"
28#include "TH2F.h"
29#include "TProfile.h"
30
31#include <TClonesArray.h>
32#include <TMath.h>
33#include <TNamed.h>
34#include <TString.h>
35#include <TVector2.h>
36#include <fstream>
37
38using namespace std;
39using namespace TMath;
40
42{
43 public:
46 virtual ~BmnDchTrackFinder();
47
48 virtual InitStatus Init();
49 virtual void Exec(Option_t* opt);
50 virtual void Finish();
51
53
54 private:
55 void initHists();
56
63 UInt_t fEventNo; // event counter
65
69
71 /** Input array **/
74
75 /** Output arrays **/
79
82
83 Int_t nChambers; // dch1 or dch2
84 Int_t nWires; // corresponding to the found v(0), u(1), y(2), x(3)-pairs
85 Int_t nLayers; // a(0) or b(1)
86 Int_t nSegmentsMax; // Max. number of found segments to store
87
88 Double_t t_dc[4][16]; //[time interval][plane number]
89 Double_t pol_par_dc[3][5][16]; //[polinom number][param number][plane number]
90 Double_t scaling[16]; //[plane number]
91
92 Double_t scale; // scaling for transfer function coeffs
93
94 Double_t z_loc[8]; // z local xa->vb (cm)
95 Double_t z_glob[16]; // z global dc 1 & dc 2 (cm)
96 Double_t Z_dch1; // z coord in the middle of dch1
97 Double_t Z_dch2; // z coord in the middle of dch2
99 Z_dch_mid; // z coord between the two chambers, this z is considered the global z for the matched dch-segment
102
107
112
114
116
120
123
124 Double_t*** v; //!
125 Double_t*** u; //!
126 Double_t*** y; //!
127 Double_t*** x; //!
128 Int_t*** vId; //!
129 Int_t*** uId; //!
130 Int_t*** yId; //!
131 Int_t*** xId; //!
158
163
164 Double_t* x_mid; //! x glob of matched segment in the z situated between the two DCH chambers
165 Double_t* y_mid; //! y glob of matched segment in the z situated between the two DCH chambers
166 Int_t* pairID; //! segments numbers that were matche into global track in form of 1000 * (DC1_segIt + 1) +
167 //! DC@_segIt + 1
168 Int_t* nhits; //! total number of hits from the two segments that were matched
169 Double_t* aX; //! x slope of the matched segment
170 Double_t* aY; //! y slope of the matched segment
171 Double_t* imp; //! reconstructed particle trajectory momentum
172 Double_t* leng; //! the distance from z = 0 to the global point of the matched segment
173 Double_t* Chi2_match; //! chi2 of the matched seg
174
176
177 // added
181
223 TH1F* haX1; //!
224 TH1F* haY1; //!
225 TH1F* haX2; //!
226 TH1F* haY2; //!
227 TH1F* hx1; //!
228 TH1F* hy1; //!
229 TH1F* hx2; //!
230 TH1F* hy2; //!
231 TH1F* hX; //!
232 TH1F* hY; //!
233 TH1F* haX; //!
234 TH1F* haY; //!
259
276
285
294
303
312
321
330
339
348
357
366
375
384
393
402
413
424 TH1F* hP; //!
429
436 // end
437
438 void CreateDchTrack();
451 Int_t,
452 Int_t,
453 Int_t,
454 Int_t,
455 Int_t,
456 Int_t,
457 Int_t,
458 Int_t,
459 Double_t**,
460 Double_t**,
461 Double_t**,
462 Double_t**,
463 Int_t**,
464 Int_t**,
465 Int_t**,
466 Int_t**,
467 Double_t**,
468 Double_t**,
469 Double_t**,
470 Double_t**,
471 Double_t**,
472 Double_t**,
473 Double_t**,
474 Double_t**,
475 Double_t**,
476 Int_t**,
477 Double_t**,
478 Double_t**,
479 Double_t**,
480 Double_t**,
481 Int_t**,
482 Int_t**,
483 Double_t**,
484 Double_t**);
486 Int_t,
487 Int_t,
488 Int_t,
489 Int_t,
490 Int_t,
491 Int_t,
492 Int_t,
493 Int_t,
494 Double_t**,
495 Double_t**,
496 Double_t**,
497 Double_t**,
498 Int_t**,
499 Int_t**,
500 Int_t**,
501 Int_t**,
502 Double_t**,
503 Double_t**,
504 Double_t**,
505 Double_t**,
506 Double_t**,
507 Double_t**,
508 Double_t**,
509 Double_t**,
510 Double_t**,
511 Int_t**,
512 Double_t**,
513 Double_t**,
514 Double_t**,
515 Double_t**,
516 Int_t**,
517 Int_t**,
518 Double_t**,
519 Double_t**);
521 TString,
522 Int_t,
523 Int_t,
524 Int_t,
525 Double_t*,
526 Double_t*,
527 Double_t*,
528 Double_t*,
529 Bool_t*,
530 Bool_t*,
531 Double_t**,
532 Double_t**,
533 Double_t**);
535 TString,
536 TString,
537 Int_t,
538 Int_t,
539 Double_t*,
540 Double_t*,
541 Bool_t*,
542 Double_t**,
543 Double_t**);
545 TString,
546 Int_t,
547 Int_t,
548 Int_t,
549 Double_t*,
550 Double_t*,
551 Double_t*,
552 Double_t*,
553 Int_t*,
554 Int_t*,
555 Bool_t*,
556 Bool_t*,
557 Double_t**,
558 Int_t**,
559 Double_t**,
560 Double_t**);
562 TString,
563 TString,
564 Int_t,
565 Int_t,
566 Double_t*,
567 Double_t*,
568 Int_t*,
569 Bool_t*,
570 Double_t**,
571 Int_t**,
572 Double_t**);
573 void SegmentsToBeMatched();
574
576};
577
578#endif
bool Bool_t
int Int_t
double Double_t
const char Option_t
#define ClassDef(name, id)
void FindSegmentTrackMCId(Int_t, Int_t **, Double_t *, Int_t *, Int_t *)
TList fhList
chi2 of the matched seg
void FillPlaneResiduals(Int_t, Int_t *, Double_t **, Double_t **, Double_t **, Double_t *)
TClonesArray * fBmnDchDigitsArray
Input array.
Double_t * y_mid
x glob of matched segment in the z situated between the two DCH chambers
TClonesArray * fDchHits
Output arrays.
Int_t ReconstructionSingleMC(Int_t, TString, TString, Int_t, Int_t, Double_t *, Double_t *, Int_t *, Bool_t *, Double_t **, Int_t **, Double_t **)
Double_t pol_par_dc[3][5][16]
Double_t *** Sigm_y_single
Int_t * nhits
segments numbers that were matche into global track in form of 1000 * (DC1_segIt + 1) + DC_segIt + 1
Bool_t FitDchSegments(Int_t, Int_t *, Double_t **, Double_t **, Double_t **, Double_t *, Double_t *, Double_t *)
void FillSegmentParametersSigmas(Int_t, Double_t **, Double_t **, Double_t *, Double_t **)
Double_t *** rh_sigm_segment
virtual void Exec(Option_t *opt)
Double_t * aX
total number of hits from the two segments that were matched
TClonesArray * fDchSegments
Int_t ReconstructionMC(Int_t, TString, Int_t, Int_t, Int_t, Double_t *, Double_t *, Double_t *, Double_t *, Int_t *, Int_t *, Bool_t *, Bool_t *, Double_t **, Int_t **, Double_t **, Double_t **)
void SelectLongestAndBestSegments(Int_t, Int_t *, Double_t **, Double_t *)
void SetTransferFunction(TString name)
void CompareDaDb(Double_t, Double_t &)
Double_t * aY
x slope of the matched segment
Double_t CalculateResidual(Int_t, Int_t, Double_t **, Double_t **)
Double_t * leng
reconstructed particle trajectory momentum
Int_t ReconstructionSingle(Int_t, TString, TString, Int_t, Int_t, Double_t *, Double_t *, Bool_t *, Double_t **, Double_t **)
Int_t BuildUVSegments(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Double_t **, Double_t **, Double_t **, Double_t **, Int_t **, Int_t **, Int_t **, Int_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Int_t **, Double_t **, Double_t **, Double_t **, Double_t **, Int_t **, Int_t **, Double_t **, Double_t **)
Double_t CalculateResidualMatch(Int_t, Int_t, Int_t, Double_t ***, Double_t ***)
Double_t *** Sigm_x_single
virtual InitStatus Init()
Int_t Reconstruction(Int_t, TString, Int_t, Int_t, Int_t, Double_t *, Double_t *, Double_t *, Double_t *, Bool_t *, Bool_t *, Double_t **, Double_t **, Double_t **)
Double_t t_dc[4][16]
Double_t *** Sigm_u_single
TClonesArray * fDchTracks
Double_t *** params_sigmas
Double_t *** rh_segment_time
Double_t *** Sigm_v_single
TClonesArray * fBmnHitsArray
Int_t BuildXYSegments(Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Double_t **, Double_t **, Double_t **, Double_t **, Int_t **, Int_t **, Int_t **, Int_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Double_t **, Int_t **, Double_t **, Double_t **, Double_t **, Double_t **, Int_t **, Int_t **, Double_t **, Double_t **)
Double_t * imp
y slope of the matched segment
Int_t * pairID
y glob of matched segment in the z situated between the two DCH chambers
Double_t * Chi2_match
the distance from z = 0 to the global point of the matched segment
Definition json.hpp:4446