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 44 of file PndFTSCAGBTracker.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kFastPrimIter 
kAllPrimIter 
kAllPrimJumpIter 
kAllSecIter 

Definition at line 148 of file PndFTSCAGBTracker.h.

148  {
149  kFastPrimIter, // primary fast tracks
150  kAllPrimIter, // primary all tracks
151  kAllPrimJumpIter, // primary tracks with jumped triplets
152  kAllSecIter // secondary all tracks
153  };

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 95 of file PndFTSCAGBTracker.h.

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

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

◆ GetParameters()

const PndFTSCAParam& PndFTSCAGBTracker::GetParameters ( ) const
inline

Definition at line 71 of file PndFTSCAGBTracker.h.

References fParameters.

Referenced by Refit_1().

71 { return fParameters; }
PndFTSCAParam fParameters

◆ GetParametersNonConst()

◆ Hit()

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

Definition at line 57 of file PndFTSCAGBTracker.h.

References fHits.

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

◆ Hits()

const PndFTSCAGBHit* PndFTSCAGBTracker::Hits ( ) const
inline

Definition at line 56 of file PndFTSCAGBTracker.h.

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

56 { 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 58 of file PndFTSCAGBTracker.h.

References fNHits.

58 { return fNHits; }

◆ NStations()

int PndFTSCAGBTracker::NStations ( ) const
inline

Definition at line 73 of file PndFTSCAGBTracker.h.

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

73 { return fParameters.NStations(); }
PndFTSCAParam fParameters
int NStations() const
Definition: PndFTSCAParam.h:44

◆ NTimers()

int PndFTSCAGBTracker::NTimers ( ) const
inline

Definition at line 61 of file PndFTSCAGBTracker.h.

References fNTimers.

61 { return fNTimers; }
static const int fNTimers

◆ NTracks()

int PndFTSCAGBTracker::NTracks ( ) const
inline

Definition at line 63 of file PndFTSCAGBTracker.h.

References fNTracks.

63 { 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 1 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().

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

◆ 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 92 of file PndFTSCAGBTracker.h.

References fSliceTrackerCpuTime, and SetHits().

92 { return fSliceTrackerCpuTime; }

◆ SliceTrackerTime()

double PndFTSCAGBTracker::SliceTrackerTime ( ) const
inline

Definition at line 91 of file PndFTSCAGBTracker.h.

References fSliceTrackerTime.

91 { return fSliceTrackerTime; }

◆ StartEvent()

void PndFTSCAGBTracker::StartEvent ( )

◆ StatNEvents()

int PndFTSCAGBTracker::StatNEvents ( ) const
inline

Definition at line 62 of file PndFTSCAGBTracker.h.

References fStatNEvents.

62 { return fStatNEvents; }

◆ StatTime()

double PndFTSCAGBTracker::StatTime ( int  iTimer) const
inline

Definition at line 60 of file PndFTSCAGBTracker.h.

References fStatTime.

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

◆ Time()

double PndFTSCAGBTracker::Time ( ) const
inline

Definition at line 59 of file PndFTSCAGBTracker.h.

References fTime.

59 { return fTime; }

◆ Track()

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

Definition at line 66 of file PndFTSCAGBTracker.h.

References fTracks, and i.

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

◆ TrackHit()

int PndFTSCAGBTracker::TrackHit ( int  i) const
inline

Definition at line 69 of file PndFTSCAGBTracker.h.

References fTrackHits, and i.

69 { return fTrackHits[i]; }
unsigned int i
Definition: P4_F32vec4.h:21

◆ TrackHits() [1/2]

int* PndFTSCAGBTracker::TrackHits ( ) const
inline

Definition at line 67 of file PndFTSCAGBTracker.h.

References fTrackHits.

67 { return fTrackHits; }

◆ TrackHits() [2/2]

int* PndFTSCAGBTracker::TrackHits ( )
inline

Definition at line 68 of file PndFTSCAGBTracker.h.

References fTrackHits.

68 { return fTrackHits; }

◆ Tracks() [1/2]

PndFTSCAGBTrack* PndFTSCAGBTracker::Tracks ( ) const
inline

Definition at line 64 of file PndFTSCAGBTracker.h.

References fTracks.

64 { return fTracks; }
PndFTSCAGBTrack * fTracks

◆ Tracks() [2/2]

PndFTSCAGBTrack* PndFTSCAGBTracker::Tracks ( )
inline

Definition at line 65 of file PndFTSCAGBTracker.h.

References fTracks.

65 { 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 169 of file PndFTSCAGBTracker.h.

Member Data Documentation

◆ fBStrips

PndFTSResizableArray<FTSCAStrip> PndFTSCAGBTracker::fBStrips
protected

Definition at line 176 of file PndFTSCAGBTracker.h.

◆ fFindGappedTracks

bool PndFTSCAGBTracker::fFindGappedTracks

Definition at line 156 of file PndFTSCAGBTracker.h.

◆ fFindIter

int PndFTSCAGBTracker::fFindIter

Definition at line 154 of file PndFTSCAGBTracker.h.

◆ fFStrips

PndFTSResizableArray<FTSCAStrip> PndFTSCAGBTracker::fFStrips
protected

Definition at line 175 of file PndFTSCAGBTracker.h.

◆ fGTi

L1CATFIterTimerInfo PndFTSCAGBTracker::fGTi
protected

Definition at line 189 of file PndFTSCAGBTracker.h.

◆ fHits

PndFTSResizableArray<PndFTSCAGBHit> PndFTSCAGBTracker::fHits

Definition at line 171 of file PndFTSCAGBTracker.h.

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

◆ fMaxDX0

float PndFTSCAGBTracker::fMaxDX0

Definition at line 166 of file PndFTSCAGBTracker.h.

◆ fMaxInvMom

float PndFTSCAGBTracker::fMaxInvMom

Definition at line 158 of file PndFTSCAGBTracker.h.

◆ fNHits

int PndFTSCAGBTracker::fNHits
protected

Definition at line 177 of file PndFTSCAGBTracker.h.

Referenced by NHits().

◆ fNTimers

const int PndFTSCAGBTracker::fNTimers = 25
staticprotected

Definition at line 183 of file PndFTSCAGBTracker.h.

Referenced by NTimers().

◆ fNTracks

int PndFTSCAGBTracker::fNTracks
protected

Definition at line 180 of file PndFTSCAGBTracker.h.

Referenced by NTracks().

◆ fParameters

PndFTSCAParam PndFTSCAGBTracker::fParameters
protected

Definition at line 194 of file PndFTSCAGBTracker.h.

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

◆ fPick

float PndFTSCAGBTracker::fPick

Definition at line 159 of file PndFTSCAGBTracker.h.

◆ fPick_m

float PndFTSCAGBTracker::fPick_m

Definition at line 159 of file PndFTSCAGBTracker.h.

◆ fPick_r

float PndFTSCAGBTracker::fPick_r

Definition at line 159 of file PndFTSCAGBTracker.h.

◆ fPickNeighbour

float PndFTSCAGBTracker::fPickNeighbour

Definition at line 162 of file PndFTSCAGBTracker.h.

◆ fSliceTrackerCpuTime

double PndFTSCAGBTracker::fSliceTrackerCpuTime
protected

Definition at line 188 of file PndFTSCAGBTracker.h.

Referenced by SliceTrackerCpuTime().

◆ fSliceTrackerTime

double PndFTSCAGBTracker::fSliceTrackerTime
protected

Definition at line 187 of file PndFTSCAGBTracker.h.

Referenced by SliceTrackerTime().

◆ fStatGTi

L1CATFIterTimerInfo PndFTSCAGBTracker::fStatGTi
protected

Definition at line 191 of file PndFTSCAGBTracker.h.

◆ fStatNEvents

int PndFTSCAGBTracker::fStatNEvents
protected

Definition at line 185 of file PndFTSCAGBTracker.h.

Referenced by StatNEvents().

◆ fStatTi

L1CATFTimerInfo PndFTSCAGBTracker::fStatTi
protected

Definition at line 192 of file PndFTSCAGBTracker.h.

◆ fStatTime

double PndFTSCAGBTracker::fStatTime[fNTimers]
protected

Definition at line 184 of file PndFTSCAGBTracker.h.

Referenced by StatTime().

◆ fTarget

FTSCATarget PndFTSCAGBTracker::fTarget

Definition at line 157 of file PndFTSCAGBTracker.h.

◆ fTi

L1CATFTimerInfo PndFTSCAGBTracker::fTi
protected

Definition at line 190 of file PndFTSCAGBTracker.h.

◆ fTime

double PndFTSCAGBTracker::fTime
protected

Definition at line 182 of file PndFTSCAGBTracker.h.

Referenced by Time().

◆ fTrackHits

int* PndFTSCAGBTracker::fTrackHits
protected

Definition at line 178 of file PndFTSCAGBTracker.h.

Referenced by TrackHit(), and TrackHits().

◆ fTracks

PndFTSCAGBTrack* PndFTSCAGBTracker::fTracks
protected

Definition at line 179 of file PndFTSCAGBTracker.h.

Referenced by Track(), and Tracks().

◆ TRACK_CHI2_CUT

float PndFTSCAGBTracker::TRACK_CHI2_CUT

Definition at line 164 of file PndFTSCAGBTracker.h.

◆ TRACK_PROB_CUT

float PndFTSCAGBTracker::TRACK_PROB_CUT

Definition at line 163 of file PndFTSCAGBTracker.h.

◆ TRIPLET_CHI2_CUT

float_v PndFTSCAGBTracker::TRIPLET_CHI2_CUT

Definition at line 165 of file PndFTSCAGBTracker.h.


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