PandaRoot
PndFTSCAGBTracker Class Reference

#include <PndFTSCAGBTracker.h>

Public Types

enum  { kFastPrimIter, kAllPrimIter, kAllPrimJumpIter, kAllSecIter }
 

Public Member Functions

 PndFTSCAGBTracker ()
 
 ~PndFTSCAGBTracker ()
 
void Init ()
 
void StartEvent ()
 
void SetNSlices (int N)
 
void SetNHits (int nHits)
 
const PndFTSCAGBHitHits () const
 
const PndFTSCAGBHitHit (int index) const
 
int NHits () const
 
double Time () const
 
double StatTime (int iTimer) const
 
int NTimers () const
 
int StatNEvents () const
 
int NTracks () const
 
PndFTSCAGBTrackTracks () const
 
PndFTSCAGBTrackTracks ()
 
const PndFTSCAGBTrackTrack (int i) const
 
int * TrackHits () const
 
int * TrackHits ()
 
int TrackHit (int i) const
 
const PndFTSCAParamGetParameters () const
 
int NStations () const
 
bool ReadSettingsFromFile (string prefix)
 
void ReadSettings (std::istream &in)
 
double SliceTrackerTime () const
 
double SliceTrackerCpuTime () const
 
void SetHits (std::vector< PndFTSCAGBHit > &hits)
 
int GetHitsSize () const
 
PndFTSCAParamGetParametersNonConst ()
 
void FindTracks ()
 
void FitTracks ()
 
float_m FitTrack (PndFTSCATrackParamVector &t, uint_v &firstHits, uint_v::Memory &NTrackHits, int &nTracksV, float_m active0, bool dir)
 
void InitialTrackApproximation (PndFTSCATrackParamVector &t, uint_v &firstHits, uint_v::Memory &NTrackHits, int &nTracksV, float_m active0)
 
float_m FitTrackCA (PndFTSCATrackParamVector &t, uint_v &firstHits, uint_v::Memory &NTrackHits, int &nTracksV, float_m active0, bool dir, bool init=false)
 
void CATrackFinder ()
 
void EstimatePV (const FTSCAHitsV &hits, float &zPV)
 
void CreateNPlets (const FTSCATarget &target, const FTSCAHitsV &hits, FTSCANPletsV &singlets)
 
void CreateNPlets (const FTSCANPletsV &doublets, FTSCANPletsV &triplets)
 
void PickUpHits (FTSCAElementsOnStation< FTSCANPletV > &a, FTSCAElementsOnStation< FTSCANPletV > &r, int iS)
 
void Create1Plets (const FTSCATarget &target, const FTSCAHits &hits, FTSCAElementsOnStation< FTSCANPletV > &singlets, int iStation)
 
void CreateNPlets (const FTSCATarget &target, const FTSCAHits &hits, FTSCAElementsOnStation< FTSCANPletV > &triplets, int iStation, int cellLength)
 
void FindNeighbours (FTSCANPlets &triplets)
 
void CreateTracks (const FTSCANPlets &triplets, FTSCATracks &tracks)
 
void InvertCholetsky (float a[15]) const
 
void MultiplySS (float const C[15], float const V[15], float K[5][5]) const
 
void MultiplyMS (float const C[5][5], float const V[15], float K[15]) const
 
void MultiplySR (float const C[15], float const r_in[5], float r_out[5]) const
 
void FilterTracks (float const r[5], float const C[15], float const m[5], float const V[15], float R[5], float W[15], float &chi2) const
 
void Merge (FTSCATracks &tracks)
 
float_m Refit (FTSCANPletV &triplet, const FTSCAHits &hits)
 
void Refit_1 (FTSCANPletV &triplet, const FTSCAHits &hits)
 
void FindBestCandidate (int ista, FTSCATrack &best_tr, int currITrip, FTSCATrack &curr_tr, unsigned char min_best_l, const FTSCANPlets &triplets, unsigned int &nCalls)
 
float_m IsEqual (const PndFTSCATrackParamVector &p, const FTSCAHit &h)
 

Public Attributes

int fFindIter
 
bool fFindGappedTracks
 
FTSCATarget fTarget
 
float fMaxInvMom
 
float fPick_m
 
float fPick_r
 
float fPick
 
float fPickNeighbour
 
float TRACK_PROB_CUT
 
float TRACK_CHI2_CUT
 
float_v TRIPLET_CHI2_CUT
 
float fMaxDX0
 
PndFTSResizableArray< PndFTSCAGBHitfHits
 

Protected Attributes

PndFTSResizableArray< FTSCAStripfFStrips
 
PndFTSResizableArray< FTSCAStripfBStrips
 
int fNHits
 
int * fTrackHits
 
PndFTSCAGBTrackfTracks
 
int fNTracks
 
double fTime
 
double fStatTime [fNTimers]
 
int fStatNEvents
 
double fSliceTrackerTime
 
double fSliceTrackerCpuTime
 
L1CATFIterTimerInfo fGTi
 
L1CATFTimerInfo fTi
 
L1CATFIterTimerInfo fStatGTi
 
L1CATFTimerInfo fStatTi
 
PndFTSCAParam fParameters
 

Static Protected Attributes

static const int fNTimers = 25
 

Friends

class PndFTSCAPerformance
 Try to group close hits in row formed by one track. After sort hits. More...
 

Detailed Description

Definition at line 56 of file PndFTSCAGBTracker.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kFastPrimIter 
kAllPrimIter 
kAllPrimJumpIter 
kAllSecIter 

Definition at line 160 of file PndFTSCAGBTracker.h.

160  {
161  kFastPrimIter, // primary fast tracks
162  kAllPrimIter, // primary all tracks
163  kAllPrimJumpIter, // primary tracks with jumped triplets
164  kAllSecIter // secondary all tracks
165  };

Constructor & Destructor Documentation

◆ PndFTSCAGBTracker()

PndFTSCAGBTracker::PndFTSCAGBTracker ( )

◆ ~PndFTSCAGBTracker()

PndFTSCAGBTracker::~PndFTSCAGBTracker ( )

Member Function Documentation

◆ CATrackFinder()

void PndFTSCAGBTracker::CATrackFinder ( )

Referenced by GetParametersNonConst().

◆ Create1Plets()

void PndFTSCAGBTracker::Create1Plets ( const FTSCATarget target,
const FTSCAHits hits,
FTSCAElementsOnStation< FTSCANPletV > &  singlets,
int  iStation 
)

Referenced by GetParametersNonConst().

◆ CreateNPlets() [1/3]

void PndFTSCAGBTracker::CreateNPlets ( const FTSCATarget target,
const FTSCAHitsV hits,
FTSCANPletsV singlets 
)

Referenced by GetParametersNonConst().

◆ CreateNPlets() [2/3]

void PndFTSCAGBTracker::CreateNPlets ( const FTSCANPletsV doublets,
FTSCANPletsV triplets 
)

◆ CreateNPlets() [3/3]

void PndFTSCAGBTracker::CreateNPlets ( const FTSCATarget target,
const FTSCAHits hits,
FTSCAElementsOnStation< FTSCANPletV > &  triplets,
int  iStation,
int  cellLength 
)

◆ CreateTracks()

void PndFTSCAGBTracker::CreateTracks ( const FTSCANPlets triplets,
FTSCATracks tracks 
)

Referenced by GetParametersNonConst().

◆ EstimatePV()

void PndFTSCAGBTracker::EstimatePV ( const FTSCAHitsV hits,
float &  zPV 
)

Referenced by GetParametersNonConst().

◆ FilterTracks()

void PndFTSCAGBTracker::FilterTracks ( float const  r[5],
float const  C[15],
float const  m[5],
float const  V[15],
float  R[5],
float  W[15],
float &  chi2 
) const

Referenced by GetParametersNonConst().

◆ FindBestCandidate()

void PndFTSCAGBTracker::FindBestCandidate ( int  ista,
FTSCATrack best_tr,
int  currITrip,
FTSCATrack curr_tr,
unsigned char  min_best_l,
const FTSCANPlets triplets,
unsigned int &  nCalls 
)

Referenced by GetParametersNonConst().

◆ FindNeighbours()

void PndFTSCAGBTracker::FindNeighbours ( FTSCANPlets triplets)

Referenced by GetParametersNonConst().

◆ FindTracks()

void PndFTSCAGBTracker::FindTracks ( )

Referenced by GetParametersNonConst().

◆ FitTrack()

float_m PndFTSCAGBTracker::FitTrack ( PndFTSCATrackParamVector t,
uint_v &  firstHits,
uint_v::Memory &  NTrackHits,
int &  nTracksV,
float_m  active0,
bool  dir 
)

Referenced by GetParametersNonConst().

◆ FitTrackCA()

float_m PndFTSCAGBTracker::FitTrackCA ( PndFTSCATrackParamVector t,
uint_v &  firstHits,
uint_v::Memory &  NTrackHits,
int &  nTracksV,
float_m  active0,
bool  dir,
bool  init = false 
)

Referenced by GetParametersNonConst().

◆ FitTracks()

void PndFTSCAGBTracker::FitTracks ( )

Referenced by GetParametersNonConst().

◆ GetHitsSize()

int PndFTSCAGBTracker::GetHitsSize ( ) const
inline

Definition at line 107 of file PndFTSCAGBTracker.h.

References fHits, and PndFTSArray< T, Dim >::Size().

107 { return fHits.Size(); }
PndFTSResizableArray< PndFTSCAGBHit > fHits
int Size() const
Definition: PndFTSArray.h:498

◆ GetParameters()

const PndFTSCAParam& PndFTSCAGBTracker::GetParameters ( ) const
inline

Definition at line 83 of file PndFTSCAGBTracker.h.

References fParameters.

Referenced by Refit_1().

83 { return fParameters; }
PndFTSCAParam fParameters

◆ GetParametersNonConst()

◆ Hit()

const PndFTSCAGBHit& PndFTSCAGBTracker::Hit ( int  index) const
inline

Definition at line 69 of file PndFTSCAGBTracker.h.

References fHits.

69 { return fHits[index]; }
PndFTSResizableArray< PndFTSCAGBHit > fHits

◆ Hits()

const PndFTSCAGBHit* PndFTSCAGBTracker::Hits ( ) const
inline

Definition at line 68 of file PndFTSCAGBTracker.h.

References PndFTSArray< T, Dim >::Data(), and fHits.

68 { return fHits.Data(); }
PndFTSResizableArray< PndFTSCAGBHit > fHits

◆ Init()

void PndFTSCAGBTracker::Init ( )

◆ InitialTrackApproximation()

void PndFTSCAGBTracker::InitialTrackApproximation ( PndFTSCATrackParamVector t,
uint_v &  firstHits,
uint_v::Memory &  NTrackHits,
int &  nTracksV,
float_m  active0 
)

Referenced by GetParametersNonConst().

◆ InvertCholetsky()

void PndFTSCAGBTracker::InvertCholetsky ( float  a[15]) const

Referenced by GetParametersNonConst().

◆ IsEqual()

float_m PndFTSCAGBTracker::IsEqual ( const PndFTSCATrackParamVector p,
const FTSCAHit h 
)

Referenced by GetParametersNonConst().

◆ Merge()

void PndFTSCAGBTracker::Merge ( FTSCATracks tracks)

Referenced by GetParametersNonConst().

◆ MultiplyMS()

void PndFTSCAGBTracker::MultiplyMS ( float const  C[5][5],
float const  V[15],
float  K[15] 
) const

Referenced by GetParametersNonConst().

◆ MultiplySR()

void PndFTSCAGBTracker::MultiplySR ( float const  C[15],
float const  r_in[5],
float  r_out[5] 
) const

Referenced by GetParametersNonConst().

◆ MultiplySS()

void PndFTSCAGBTracker::MultiplySS ( float const  C[15],
float const  V[15],
float  K[5][5] 
) const

Referenced by GetParametersNonConst().

◆ NHits()

int PndFTSCAGBTracker::NHits ( ) const
inline

Definition at line 70 of file PndFTSCAGBTracker.h.

References fNHits.

70 { return fNHits; }

◆ NStations()

int PndFTSCAGBTracker::NStations ( ) const
inline

Definition at line 85 of file PndFTSCAGBTracker.h.

References fParameters, PndFTSCAParam::NStations(), ReadSettings(), and ReadSettingsFromFile().

85 { return fParameters.NStations(); }
PndFTSCAParam fParameters
int NStations() const
Definition: PndFTSCAParam.h:56

◆ NTimers()

int PndFTSCAGBTracker::NTimers ( ) const
inline

Definition at line 73 of file PndFTSCAGBTracker.h.

References fNTimers.

73 { return fNTimers; }
static const int fNTimers

◆ NTracks()

int PndFTSCAGBTracker::NTracks ( ) const
inline

Definition at line 75 of file PndFTSCAGBTracker.h.

References fNTracks.

75 { return fNTracks; }

◆ PickUpHits()

void PndFTSCAGBTracker::PickUpHits ( FTSCAElementsOnStation< FTSCANPletV > &  a,
FTSCAElementsOnStation< FTSCANPletV > &  r,
int  iS 
)

Referenced by GetParametersNonConst().

◆ ReadSettings()

void PndFTSCAGBTracker::ReadSettings ( std::istream &  in)

Referenced by NStations().

◆ ReadSettingsFromFile()

bool PndFTSCAGBTracker::ReadSettingsFromFile ( string  prefix)

Referenced by NStations().

◆ Refit()

float_m PndFTSCAGBTracker::Refit ( FTSCANPletV triplet,
const FTSCAHits hits 
)

Referenced by GetParametersNonConst().

◆ Refit_1()

void PndFTSCAGBTracker::Refit_1 ( FTSCANPletV triplet,
const FTSCAHits hits 
)

Definition at line 13 of file SQM.h.

References PndFTSCATrackParamVector::Chi2(), FTSCAStripInfo::cos, TESV::e, FTSCAHit::Err2X1(), FTSCAHit::Err2X2(), f, FTSCAStation::f, fHits, GetParameters(), i, FTSCAHit::Id(), FTSCANPletV::IHit(), FTSCAHit::IStation(), FTSCANPletV::N(), PndFTSCATrackParamVector::NDF(), FTSCAHits::OnStationConst(), FTSCANPletV::Param(), PndFTSCAGBHit::point_Px, PndFTSCAGBHit::point_Py, PndFTSCAGBHit::point_Pz, PndFTSCAGBHit::point_X, PndFTSCAGBHit::point_Y, PndFTSCAGBHit::point_Z, TESV::s, PndFTSCATrackParamVector::SetChi2(), PndFTSCATrackParamVector::SetX(), PndFTSCATrackParamVector::SetY(), FTSCAStripInfo::sin, sqrt(), PndFTSCAParam::Station(), PndFTSCATrackParamVector::X(), FTSCAHit::X0(), FTSCAHit::X1(), FTSCAHit::X2(), PndFTSCATrackParamVector::Y(), and PndFTSCATrackParamVector::Z().

Referenced by GetParametersNonConst().

14 {
15 
16  //#include "Tang.h"
17 
18  Double_t det;
19  TMatrixD H(4, 4);
20  TMatrixD HY(4, 1);
21  TMatrixD Cov(4, 4);
22  TMatrixD HC(4, 1);
23 
24  float f1, f2, f3, f4, f5, Y, chi2;
25 
26  for (Int_t i = 0; i < 4; i++) {
27  HY(i, 0) = 0;
28  HC(i, 0) = 0;
29  for (Int_t j = 0; j < 4; j++) {
30  H(i, j) = 0;
31  }
32  }
33 
34  const int N = triplet.N();
35 
36  float Tx, Ty, Bx, By;
37 
38  //#include "SQM_0.h"
39 
40  cout << " **************** Param before Refit_1 ************ " << endl;
41 
42  PndFTSCATrackParamVector &param = triplet.Param();
43 
44  cout << " param.Tx()[0] " << param.Tx()[0] << " param.Ty()[0] " << param.Ty()[0] << " param.QP()[0] " << param.QP()[0] << " param.X()[0] " << param.X()[0] << " param.Y()[0] "
45  << param.Y()[0] << " param.Z()[0] " << param.Z()[0] << " param.Chi2()[0] " << param.Chi2()[0] << " param.NDF()[0] " << param.NDF()[0] << endl;
46 
47  Tx = param.Tx()[0];
48  Ty = param.Ty()[0];
49  Bx = param.X()[0] - param.Tx()[0] * param.Z()[0];
50  By = param.Y()[0] - param.Ty()[0] * param.Z()[0];
51 
52  float Tx_K = Tx;
53  float Ty_K = Ty;
54  float Bx_K = Bx;
55  float By_K = By;
56 
57  cout << " **************** Before Refit_1 ************ " << endl;
58  cout << " Tx " << Tx << endl;
59  cout << " Ty " << Ty << endl;
60  cout << " Bx " << Bx << endl;
61  cout << " By " << By << endl;
62 
63  // float_m active = triplet.IsValid();
64 
65  for (int it = 0; it < 3; it++) {
66 
67  for (Int_t i = 0; i < 4; i++) {
68  HY(i, 0) = 0;
69  HC(i, 0) = 0;
70  for (Int_t j = 0; j < 4; j++) {
71  H(i, j) = 0;
72  }
73  }
74 
75  for (int ihit = 0; ihit < N; ihit++) {
76  const TESV &index = triplet.IHit(ihit);
77  cout << "index.s station " << index.s << " index.e " << index.e << endl;
78  const FTSCAElementsOnStation<FTSCAHit> &hits_st = hits.OnStationConst(index.s[0]);
79 
80  const FTSCAHit &hit = hits_st[index.e[0]];
81 
82  int ISta = (int)hit.IStation();
83  cout << "chtck hit.IStation()" << ISta << endl;
84 
85  // float fX = param.X()[0] - param.Tx()[0]*(param.Z()[0] - hit.X0());
86  // float fY = param.Y()[0] - param.Ty()[0]*(param.Z()[0] - hit.X0());
87 
88  const PndFTSCAGBHit &hit_1 = fHits[hit.Id()];
89 
90  cout << " ************************************************* " << endl;
91  cout << " MC_Tx " << hit_1.point_Px / hit_1.point_Pz << endl;
92  cout << " MC_Ty " << hit_1.point_Py / hit_1.point_Pz << endl;
93  cout << " MC_Bx " << (hit_1.point_X - (hit_1.point_Px / hit_1.point_Pz) * hit_1.point_Z) << endl;
94  cout << " MC_By " << (hit_1.point_Y - (hit_1.point_Py / hit_1.point_Pz) * hit_1.point_Z) << endl;
95 
96  cout << " hit.R() " << hit.R() << " hit.ErrR() " << sqrt(hit.Err2R()) << endl;
97  cout << " X " << hit.X1() << " Y " << hit.X2() << " Z " << hit.X0() << endl;
98 
99  const FTSCAStation &station = GetParameters().Station(ISta);
100  const float s = station.f.sin;
101 
102  const float c = station.f.cos;
103 
104  cout << " s " << s << " c " << c << endl;
105 
106  float Tx_MC = hit_1.point_Px / hit_1.point_Pz;
107  float Ty_MC = hit_1.point_Py / hit_1.point_Pz;
108  float Bx_MC = (hit_1.point_X - (hit_1.point_Px / hit_1.point_Pz) * hit_1.point_Z);
109  float By_MC = (hit_1.point_Y - (hit_1.point_Py / hit_1.point_Pz) * hit_1.point_Z);
110  float R_MC = (c * (Tx_MC * hit.X0() + Bx_MC - hit.X1()) + s * (Ty_MC * hit.X0() + By_MC - hit.X2())) / sqrt(1.f + (c * Tx_MC + s * Ty_MC) * (c * Tx_MC + s * Ty_MC));
111 
112  if (s == 0) {
113 
114  float D2_mc_hit = sqrt((hit_1.point_X - hit.X1()) * (hit_1.point_X - hit.X1()) + (hit_1.point_Z - hit.X0()) * (hit_1.point_Z - hit.X0()));
115  float Diff_D_R = D2_mc_hit - hit.R();
116  cout << " D2_mc_hit " << D2_mc_hit << " hit.R() " << hit.R() << " Diff_D_R " << Diff_D_R << endl;
117  }
118 
119  float diff_R;
120 
121  if (R_MC > 0.f)
122  diff_R = R_MC - hit.R();
123  else
124  diff_R = R_MC + hit.R();
125 
126  cout << " diff_R " << diff_R << endl;
127 
128  float R_MC_1 =
129  (c * (Tx_MC * hit_1.point_Z + Bx_MC - hit.X1()) + s * (Ty_MC * hit_1.point_Z + By_MC - hit.X2())) / sqrt(1.f + (c * Tx_MC + s * Ty_MC) * (c * Tx_MC + s * Ty_MC));
130 
131  float diff_R_1;
132  if (R_MC_1 > 0.f)
133  diff_R_1 = R_MC_1 - hit.R();
134  else
135  diff_R_1 = R_MC_1 + hit.R();
136 
137  cout << " diff_R_1 " << diff_R_1 << endl;
138 
139  float R_MC_2 = (c * (hit_1.point_X - hit.X1()) + s * (hit_1.point_Y - hit.X2())) / sqrt(1.f + (c * Tx_MC + s * Ty_MC) * (c * Tx_MC + s * Ty_MC));
140 
141  cout << " R_MC_2 " << R_MC_2 << " hit.R()" << hit.R() << endl;
142 
143  float diff_R_2;
144  if (R_MC_2 < 0.f)
145  diff_R_2 = R_MC_2 + hit.R();
146  else
147  diff_R_2 = R_MC_2 - hit.R();
148 
149  cout << " diff_R_2 " << diff_R_2 << endl;
150 
151  // dbg
152  /*
153  if ( ihit==0 ) {
154  Tx = hit_1.point_Px/hit_1.point_Pz;
155  Ty = hit_1.point_Py/hit_1.point_Pz;
156  Bx = hit_1.point_X - (hit_1.point_Px/hit_1.point_Pz)*hit_1.point_Z;
157  By = hit_1.point_Y - (hit_1.point_Py/hit_1.point_Pz)*hit_1.point_Z;
158  }
159 
160  */
161 
162  float Y_point_of_wire = 0.f;
163  // dbg
164 
165  float fX = Tx * hit.X0() + Bx;
166  float fY = Ty * hit.X0() + By;
167 
168  cout << " Tx " << Tx << " Bx " << Bx << " Ty " << Ty << " By " << By << endl;
169 
170  float tx = c * Tx + s * Ty;
171  float rCorrection = sqrt(1.f + tx * tx);
172 
173  float Diff = c * (fX - hit.X1()) + s * (fY - hit.X2());
174  // float Diff = c*(fX - hit.X1()) + s*(fY - Y_point_of_wire);
175 
176  float Diff_mc = c * (hit_1.point_X - hit.X1()) + s * (hit_1.point_Y - hit.X2());
177 
178  // float Diff_mc = c*(hit_1.point_X -hit.X1()) + s*(hit_1.point_Y - Y_point_of_wire);
179 
180  cout << " Diff " << Diff << " Diff_mc " << Diff_mc << endl;
181 
182  cout << " ************************************************* " << endl;
183 
184  float R = hit.R();
185 
186  if (Diff < 0.f)
187  R = (-1.f) * R;
188 
189  // if (Diff_mc < 0.f ) R=(-1.f)*R; //dbg
190 
191  // float err = (sqrt(hit.Err2R())+ s*sqrt(hit.Err2X2()))*rCorrection;
192 
193  float err = sqrt(hit.Err2R());
194  // float err1= 2*hit.R()*err;
195 
196  Y = (R - (Diff / rCorrection)) / err;
197  // Y = (R*R - Diff*Diff/(rCorrection*rCorrection) )/err;
198 
199  f1 = (c * hit.X0() / rCorrection - c * Diff * tx / (rCorrection * rCorrection * rCorrection)) / err;
200 
201  // float rCorrection2= rCorrection*rCorrection;
202  // f1 = (2*Diff*c*hit.X0()/rCorrection2 - (Diff*Diff*2*tx*c)/(rCorrection2*rCorrection2))/err;
203 
204  f2 = c / (rCorrection * err);
205  // f2 = 2*Diff*c/(rCorrection*rCorrection*err);
206 
207  f3 = (s * hit.X0() / rCorrection - s * Diff * tx / (rCorrection * rCorrection * rCorrection)) / err;
208  // f3 = (2*Diff*s*hit.X0()/rCorrection2- (Diff*Diff*2*tx*s)/(rCorrection2*rCorrection2))/err;
209 
210  f4 = s / (rCorrection * err);
211 
212  // f4 =2*Diff*s/(rCorrection*rCorrection*err);
213 
214  // f4=2*Diff*s/(rCorrection*rCorrection*err);
215 
216  H(0, 0) = H(0, 0) + f1 * f1;
217  H(0, 1) = H(0, 1) + f1 * f2;
218  H(0, 2) = H(0, 2) + f1 * f3;
219  H(0, 3) = H(0, 3) + f1 * f4;
220  H(1, 0) = H(0, 1);
221  H(1, 1) = H(1, 1) + f2 * f2;
222  H(1, 2) = H(1, 2) + f2 * f3;
223  H(1, 3) = H(1, 3) + f2 * f4;
224  H(2, 0) = H(0, 2);
225  H(2, 1) = H(1, 2);
226  H(2, 2) = H(2, 2) + f3 * f3;
227  H(2, 3) = H(2, 3) + f3 * f4;
228  H(3, 0) = H(0, 3);
229  H(3, 1) = H(1, 3);
230  H(3, 2) = H(2, 3);
231  H(3, 3) = H(2, 3) + f4 * f4;
232 
233  HY(0, 0) = HY(0, 0) + Y * f1;
234  HY(1, 0) = HY(1, 0) + Y * f2;
235  HY(2, 0) = HY(2, 0) + Y * f3;
236  HY(3, 0) = HY(3, 0) + Y * f4;
237 
238  } // ihit
239 
240  H.Print();
241  H.Invert(&det);
242  Cov = H;
243  H.Print();
244  Cov.Print();
245  cout << "det= " << det << endl;
246 
247  HC = H * HY;
248  HC.Print();
249 
250  cout << "DTx= " << HC(0, 0) << " +- " << sqrt(Cov(0, 0)) << endl;
251  cout << "DBx= " << HC(1, 0) << " +- " << sqrt(Cov(1, 1)) << endl;
252  cout << "DTy= " << HC(2, 0) << " +- " << sqrt(Cov(2, 2)) << endl;
253  cout << "DBy= " << HC(3, 0) << " +- " << sqrt(Cov(3, 3)) << endl;
254 
255  Tx = Tx + HC(0, 0);
256  Bx = Bx + HC(1, 0);
257  Ty = Ty + HC(2, 0);
258  By = By + HC(3, 0);
259 
260  cout << "Tx= " << Tx << endl;
261  cout << "Ty= " << Ty << endl;
262  cout << "Bx= " << Bx << endl;
263  cout << "By= " << By << endl;
264 
265  } // it
266 
267  param.SetTx(Tx);
268  param.SetTy(Ty);
269  param.SetX(Tx * param.Z()[0] + Bx);
270  param.SetY(Ty * param.Z()[0] + By);
271  param.SetBx(Bx);
272  // float Err2_Tx=(float)Cov(0,0);
273  // param.SetCov( 5, Err2_Tx);
274 
275  float Tx_1 = param.Tx()[0];
276  float Ty_1 = param.Ty()[0];
277  float Bx_1 = param.Bx()[0];
278  float By_1 = By;
279 
280  chi2 = 0.0;
281  float chi2_k = 0.0;
282  for (int ihit = 0; ihit < N; ihit++) {
283  const TESV &index = triplet.IHit(ihit);
284  cout << "index.s station " << index.s << " index.e " << index.e << endl;
285  const FTSCAElementsOnStation<FTSCAHit> &hits_st = hits.OnStationConst(index.s[0]);
286 
287  const FTSCAHit &hit = hits_st[index.e[0]];
288 
289  int ISta = (int)hit.IStation();
290  cout << "chtck hit.IStation()" << ISta << endl;
291 
292  const FTSCAStation &station = GetParameters().Station(ISta);
293  const float s_1 = station.f.sin;
294 
295  const float c_1 = station.f.cos;
296 
297  cout << " s_1 " << s_1 << " c_1 " << c_1 << endl;
298 
299  float tx_1 = c_1 * Tx_1 + s_1 * Ty_1;
300  float rCorrection_1 = sqrt(1.f + tx_1 * tx_1);
301  float fX_1 = Tx_1 * hit.X0() + Bx_1;
302  float fY_1 = Ty_1 * hit.X0() + By_1;
303 
304  float Diff_1 = c_1 * (fX_1 - hit.X1()) + s_1 * (fY_1 - hit.X2());
305 
306  float tx_k = c_1 * Tx_K + s_1 * Ty_K;
307  float rCorrection_k = sqrt(1.f + tx_k * tx_k);
308  float fX_k = Tx_K * hit.X0() + Bx_K;
309  float fY_k = Ty_K * hit.X0() + By_K;
310 
311  float Diff_k = c_1 * (fX_k - hit.X1()) + s_1 * (fY_k - hit.X2());
312  float R_k = hit.R();
313  if (Diff_k < 0.f)
314  R_k = (-1.f) * R_k;
315  // float err_k = (sqrt(hit.Err2R())+ s_1*sqrt(hit.Err2X2()) )*rCorrection_k;
316 
317  float Y_point_of_wire_1 = 0.f;
318  // float Diff_1 = c_1*(fX_1 - hit.X1()) + s_1*(fY_1 - Y_point_of_wire_1);
319  float R_1 = hit.R();
320  if (Diff_1 < 0.f)
321  R_1 = (-1.f) * R_1;
322 
323  // float err_1 = (sqrt(hit.Err2R())+ s_1*sqrt(hit.Err2X2()) )*rCorrection_1;
324  float err_1 = sqrt(hit.Err2R());
325  float err_k = err_1;
326 
327  float Mes, Mes_k;
328  if (ISta > 50) {
329  Mes = (Diff_1 / rCorrection_1 - R_1) / (sqrt(hit.Err2R()) + s_1 * sqrt(hit.Err2X2()) + c_1 * sqrt(hit.Err2X1()));
330  Mes_k = (Diff_k / rCorrection_k - R_k) / (sqrt(hit.Err2R()) + s_1 * sqrt(hit.Err2X2()) + c_1 * sqrt(hit.Err2X1()));
331  } else {
332  // Mes = (Diff_1/rCorrection_1 - R_1)/(sqrt(hit.Err2R())+ s_1*sqrt(hit.Err2X2()) );
333  // Mes_k = (Diff_k/rCorrection_k - R_k)/(sqrt(hit.Err2R())+ s_1*sqrt(hit.Err2X2()) );
334  Mes = (Diff_1 / rCorrection_1 - R_1) / sqrt(hit.Err2R());
335  Mes_k = (Diff_k / rCorrection_k - R_k) / sqrt(hit.Err2R());
336  }
337  float Mes1 = (Diff_1 - R_1 * rCorrection_1) / (err_1 * rCorrection_1);
338  if (Mes > 10.f)
339  cout << " change sighn for hit " << ihit << endl;
340 
341  cout << " Mes " << Mes << " Mes1 " << Mes1 << endl;
342  chi2 = chi2 + Mes * Mes;
343  chi2_k = chi2_k + Mes_k * Mes_k;
344  cout << " Mes*Mes " << Mes * Mes << endl;
345  }
346  cout << " chi2 " << chi2 << " chi2_k " << chi2_k << endl;
347 
348  param.SetChi2(chi2);
349 }
int N() const
Definition: FTSCANPletsV.h:61
int_v s
Definition: FTSCATES.h:49
FTSCAStripInfo f
Definition: FTSCAStation.h:44
const PndFTSCATrackParamVector & Param() const
Definition: FTSCANPletsV.h:65
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:40
const PndFTSCAParam & GetParameters() const
int Id() const
Definition: FTSCAHits.h:49
Definition: FTSCATES.h:37
const FTSCAStation & Station(short i) const
Definition: PndFTSCAParam.h:58
unsigned int i
Definition: P4_F32vec4.h:33
PndFTSResizableArray< PndFTSCAGBHit > fHits
float X2() const
Definition: FTSCAHits.h:57
float X1() const
Definition: FTSCAHits.h:56
const TESV & IHit(int IH) const
Definition: FTSCANPletsV.h:63
uint_v e
Definition: FTSCATES.h:50
const FTSCAElementsOnStation< T > & OnStationConst(char i) const
Definition: FTSCAHits.h:152
float f
Definition: P4_F32vec4.h:32
float Err2X2() const
Definition: FTSCAHits.h:66
char IStation() const
Definition: FTSCAHits.h:47
float X0() const
Definition: FTSCAHits.h:55
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:64
float Err2X1() const
Definition: FTSCAHits.h:64

◆ SetHits()

void PndFTSCAGBTracker::SetHits ( std::vector< PndFTSCAGBHit > &  hits)

Referenced by SliceTrackerCpuTime().

◆ SetNHits()

void PndFTSCAGBTracker::SetNHits ( int  nHits)

◆ SetNSlices()

void PndFTSCAGBTracker::SetNSlices ( int  N)

◆ SliceTrackerCpuTime()

double PndFTSCAGBTracker::SliceTrackerCpuTime ( ) const
inline

Definition at line 104 of file PndFTSCAGBTracker.h.

References fSliceTrackerCpuTime, and SetHits().

104 { return fSliceTrackerCpuTime; }

◆ SliceTrackerTime()

double PndFTSCAGBTracker::SliceTrackerTime ( ) const
inline

Definition at line 103 of file PndFTSCAGBTracker.h.

References fSliceTrackerTime.

103 { return fSliceTrackerTime; }

◆ StartEvent()

void PndFTSCAGBTracker::StartEvent ( )

◆ StatNEvents()

int PndFTSCAGBTracker::StatNEvents ( ) const
inline

Definition at line 74 of file PndFTSCAGBTracker.h.

References fStatNEvents.

74 { return fStatNEvents; }

◆ StatTime()

double PndFTSCAGBTracker::StatTime ( int  iTimer) const
inline

Definition at line 72 of file PndFTSCAGBTracker.h.

References fStatTime.

72 { return fStatTime[iTimer]; }
double fStatTime[fNTimers]

◆ Time()

double PndFTSCAGBTracker::Time ( ) const
inline

Definition at line 71 of file PndFTSCAGBTracker.h.

References fTime.

71 { return fTime; }

◆ Track()

const PndFTSCAGBTrack& PndFTSCAGBTracker::Track ( int  i) const
inline

Definition at line 78 of file PndFTSCAGBTracker.h.

References fTracks, and i.

78 { return fTracks[i]; }
PndFTSCAGBTrack * fTracks
unsigned int i
Definition: P4_F32vec4.h:33

◆ TrackHit()

int PndFTSCAGBTracker::TrackHit ( int  i) const
inline

Definition at line 81 of file PndFTSCAGBTracker.h.

References fTrackHits, and i.

81 { return fTrackHits[i]; }
unsigned int i
Definition: P4_F32vec4.h:33

◆ TrackHits() [1/2]

int* PndFTSCAGBTracker::TrackHits ( ) const
inline

Definition at line 79 of file PndFTSCAGBTracker.h.

References fTrackHits.

79 { return fTrackHits; }

◆ TrackHits() [2/2]

int* PndFTSCAGBTracker::TrackHits ( )
inline

Definition at line 80 of file PndFTSCAGBTracker.h.

References fTrackHits.

80 { return fTrackHits; }

◆ Tracks() [1/2]

PndFTSCAGBTrack* PndFTSCAGBTracker::Tracks ( ) const
inline

Definition at line 76 of file PndFTSCAGBTracker.h.

References fTracks.

76 { return fTracks; }
PndFTSCAGBTrack * fTracks

◆ Tracks() [2/2]

PndFTSCAGBTrack* PndFTSCAGBTracker::Tracks ( )
inline

Definition at line 77 of file PndFTSCAGBTracker.h.

References fTracks.

77 { return fTracks; }
PndFTSCAGBTrack * fTracks

Friends And Related Function Documentation

◆ PndFTSCAPerformance

friend class PndFTSCAPerformance
friend

Try to group close hits in row formed by one track. After sort hits.

Definition at line 181 of file PndFTSCAGBTracker.h.

Member Data Documentation

◆ fBStrips

PndFTSResizableArray<FTSCAStrip> PndFTSCAGBTracker::fBStrips
protected

Definition at line 188 of file PndFTSCAGBTracker.h.

◆ fFindGappedTracks

bool PndFTSCAGBTracker::fFindGappedTracks

Definition at line 168 of file PndFTSCAGBTracker.h.

◆ fFindIter

int PndFTSCAGBTracker::fFindIter

Definition at line 166 of file PndFTSCAGBTracker.h.

◆ fFStrips

PndFTSResizableArray<FTSCAStrip> PndFTSCAGBTracker::fFStrips
protected

Definition at line 187 of file PndFTSCAGBTracker.h.

◆ fGTi

L1CATFIterTimerInfo PndFTSCAGBTracker::fGTi
protected

Definition at line 201 of file PndFTSCAGBTracker.h.

◆ fHits

PndFTSResizableArray<PndFTSCAGBHit> PndFTSCAGBTracker::fHits

Definition at line 183 of file PndFTSCAGBTracker.h.

Referenced by GetHitsSize(), Hit(), Hits(), and Refit_1().

◆ fMaxDX0

float PndFTSCAGBTracker::fMaxDX0

Definition at line 178 of file PndFTSCAGBTracker.h.

◆ fMaxInvMom

float PndFTSCAGBTracker::fMaxInvMom

Definition at line 170 of file PndFTSCAGBTracker.h.

◆ fNHits

int PndFTSCAGBTracker::fNHits
protected

Definition at line 189 of file PndFTSCAGBTracker.h.

Referenced by NHits().

◆ fNTimers

const int PndFTSCAGBTracker::fNTimers = 25
staticprotected

Definition at line 195 of file PndFTSCAGBTracker.h.

Referenced by NTimers().

◆ fNTracks

int PndFTSCAGBTracker::fNTracks
protected

Definition at line 192 of file PndFTSCAGBTracker.h.

Referenced by NTracks().

◆ fParameters

PndFTSCAParam PndFTSCAGBTracker::fParameters
protected

Definition at line 206 of file PndFTSCAGBTracker.h.

Referenced by GetParameters(), GetParametersNonConst(), and NStations().

◆ fPick

float PndFTSCAGBTracker::fPick

Definition at line 171 of file PndFTSCAGBTracker.h.

◆ fPick_m

float PndFTSCAGBTracker::fPick_m

Definition at line 171 of file PndFTSCAGBTracker.h.

◆ fPick_r

float PndFTSCAGBTracker::fPick_r

Definition at line 171 of file PndFTSCAGBTracker.h.

◆ fPickNeighbour

float PndFTSCAGBTracker::fPickNeighbour

Definition at line 174 of file PndFTSCAGBTracker.h.

◆ fSliceTrackerCpuTime

double PndFTSCAGBTracker::fSliceTrackerCpuTime
protected

Definition at line 200 of file PndFTSCAGBTracker.h.

Referenced by SliceTrackerCpuTime().

◆ fSliceTrackerTime

double PndFTSCAGBTracker::fSliceTrackerTime
protected

Definition at line 199 of file PndFTSCAGBTracker.h.

Referenced by SliceTrackerTime().

◆ fStatGTi

L1CATFIterTimerInfo PndFTSCAGBTracker::fStatGTi
protected

Definition at line 203 of file PndFTSCAGBTracker.h.

◆ fStatNEvents

int PndFTSCAGBTracker::fStatNEvents
protected

Definition at line 197 of file PndFTSCAGBTracker.h.

Referenced by StatNEvents().

◆ fStatTi

L1CATFTimerInfo PndFTSCAGBTracker::fStatTi
protected

Definition at line 204 of file PndFTSCAGBTracker.h.

◆ fStatTime

double PndFTSCAGBTracker::fStatTime[fNTimers]
protected

Definition at line 196 of file PndFTSCAGBTracker.h.

Referenced by StatTime().

◆ fTarget

FTSCATarget PndFTSCAGBTracker::fTarget

Definition at line 169 of file PndFTSCAGBTracker.h.

◆ fTi

L1CATFTimerInfo PndFTSCAGBTracker::fTi
protected

Definition at line 202 of file PndFTSCAGBTracker.h.

◆ fTime

double PndFTSCAGBTracker::fTime
protected

Definition at line 194 of file PndFTSCAGBTracker.h.

Referenced by Time().

◆ fTrackHits

int* PndFTSCAGBTracker::fTrackHits
protected

Definition at line 190 of file PndFTSCAGBTracker.h.

Referenced by TrackHit(), and TrackHits().

◆ fTracks

PndFTSCAGBTrack* PndFTSCAGBTracker::fTracks
protected

Definition at line 191 of file PndFTSCAGBTracker.h.

Referenced by Track(), and Tracks().

◆ TRACK_CHI2_CUT

float PndFTSCAGBTracker::TRACK_CHI2_CUT

Definition at line 176 of file PndFTSCAGBTracker.h.

◆ TRACK_PROB_CUT

float PndFTSCAGBTracker::TRACK_PROB_CUT

Definition at line 175 of file PndFTSCAGBTracker.h.

◆ TRIPLET_CHI2_CUT

float_v PndFTSCAGBTracker::TRIPLET_CHI2_CUT

Definition at line 177 of file PndFTSCAGBTracker.h.


The documentation for this class was generated from the following files: