43 {
44 int irc = -1;
48
49 double ptrk = mdcTrk->
p();
50
51
52
54
55#ifndef BEAN
56 SmartRefVector<RecTofTrack> tofTrk = recTrk->
tofTrack();
57 SmartRefVector<RecTofTrack>::iterator it;
58#else
59 const std::vector<TTofTrack* >& tofTrk = recTrk->
tofTrack();
60 std::vector<TTofTrack* >::const_iterator it;
61#endif
62
64 std::vector<int> tofecount;
65 int goodtofetrk=0;
66 for(it = tofTrk.begin(); it!=tofTrk.end(); it++,goodtofetrk++) {
67 unsigned int st = (*it)->status();
71 if( hitst->
layer()==1 ) tofecount.push_back(goodtofetrk);
72 }
73 delete hitst;
74 if(tofecount.size()!=1) return irc;
75 it = tofTrk.begin()+tofecount[0];
76
77
78 double tof = (*it)->tof();
79 if(tof <=0 ) return irc;
80 double path = (*it)->path();
81 m_rhit = (*it)->zrhit();
82
83
85 m_mass2 = ptrk * ptrk * (1/beta2 -1);
86
87
88
89 double chitemp = 99.;
90 double pdftemp = 0;
91
92
93
94
95 double xmass[5] = {0.000511, 0.105658, 0.139570,0.493677, 0.938272};
96
97 for(int i = 0; i < 5; i++) {
98
99
100 double texp = (*it)->texp(i);
101 m_offset[i] = tof - texp;
102
103
104
105
106
107 double sigma_tmp= (*it)->sigma(i);
108
109
110 if (sigma_tmp!=0) m_sigma[i]=sigma_tmp;
111 else m_sigma[i]=0.08;
112
113
114 m_chi[i] = m_offset[i]/m_sigma[i];
115
116
117 if(fabs(m_chi[i]) < chitemp) chitemp = fabs(m_chi[i]);
119 if(fabs(ppp) > pdftemp) pdftemp = fabs(ppp);
120 }
121 m_chimin = chitemp;
122
123
124
125 for(int i = 0; i < 5; i++)
127
128
129
130 m_ndof = 1;
131 irc = 0;
132 return irc;
133}
SmartRefVector< RecTofTrack > tofTrack()
EvtRecTrack * PidTrk() const
double probCalculate(double chi2, int n)
double pdfCalculate(double offset, double sigma)
unsigned int layer() const
void setStatus(unsigned int status)