CGEM BOSS 6.6.5.g
BESIII Offline Software System
Loading...
Searching...
No Matches
MdcTrack.cxx
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2// File and Version Information:
3// $Id: MdcTrack.cxx,v 1.3 2017/12/27 06:29:02 huangzhen Exp $
4//
5// Description:
6//
7//
8// Environment:
9// Software developed for the BaBar Detector at the SLAC B-Factory.
10//
11// Author(s):
12// Steve Schaffner
13// Zhang Yao([email protected]) Migrate to BESIII
14//
15//------------------------------------------------------------------------
17#include <math.h>
18#include <stdlib.h>
19#include <assert.h>
20#include <map>
21#include "MdcGeom/MdcLayer.h"
23#include "MdcGeom/BesAngle.h"
24#include "MdcGeom/Constants.h"
25#include "CLHEP/Alist/AList.h"
26#include "TrkBase/TrkRep.h"
29#include "TrkBase/TrkRecoTrk.h"
31#include "TrkBase/TrkContext.h"
32
34#include "BField/BField.h"
35#include "MdcData/MdcHit.h"
37#include "MdcRawEvent/MdcDigi.h"
39#include "Identifier/MdcID.h"
40//#include "MdcData/CgemHitOnTrack.h"
42
43using namespace std;
44//************************************************************************/
46//************************************************************************/
47 _theTrack = aTrack;
48 _firstLayer = _lastLayer = 0;
49 _haveCurled = 0;
50}
51
52//************************************************************************/
53MdcTrack::MdcTrack(int nsupers, const TrkExchangePar& par, double chisq,
54 TrkContext& context, double trackT0) {
55//************************************************************************/
56 TrkCircleMaker maker;
57 _theTrack = maker.makeTrack(par, chisq, context, trackT0);
58 _firstLayer = _lastLayer = 0;
59 _haveCurled = 0;
60}
61
62//************************************************************************/
64//************************************************************************/
65 delete _theTrack;
66}
67//************************************************************************/
68int MdcTrack::projectToR(double radius, BesAngle &phiIntersect, int lCurl)
69 const {
70//************************************************************************/
71 // note that these are currently circle-only routines
72
73 //return -1 if no intersection
74
75 const TrkFit* tkFit = track().fitResult();
76 if (tkFit == 0) return -1;
77 TrkExchangePar par = tkFit->helix(0.0);
78 double d0 = par.d0();
79 double omega = par.omega();
80 double phi0 = par.phi0();
81 double r2d2 = radius * radius - d0 * d0;
82 if (r2d2 < 0) return -1;
83 double rinv = 1./radius;
84 double k2dinv = 1./(1 + omega * d0);
85 if (!lCurl) {
86 double arg = d0 * rinv + 0.5*omega * rinv * r2d2 * k2dinv;
87 if (fabs(arg) > 1.0) return -1;
88 phiIntersect.setRad( phi0 + asin(arg) );
89 }
90 else {
91 double arg = -d0 * rinv - 0.5*omega * rinv * r2d2 * k2dinv;
92 if (fabs(arg) > 1.0) return -1;
93 phiIntersect.setRad( phi0 + Constants::pi + asin(arg) );
94 }
95
96 return 0;
97}
98
99//************************************************************************/
100int MdcTrack::projectToR(double radius, BesAngle &phiIntersect,
101 double &arcLength, int lCurl) const {
102//************************************************************************/
103
104 //return -1 if no intersection
105 // Only valid for projecting track outwards from point of closest approach
106 // Returns arclength from POCA
107
108 const TrkFit* tkFit = track().fitResult();
109 if (tkFit == 0) return -1;
110 TrkExchangePar par = tkFit->helix(0.0);
111 double d0 = par.d0();
112 double omega = par.omega();
113 double phi0 = par.phi0();
114 double r2d2 = radius * radius - d0 * d0;
115 if (r2d2 < 0) return -1;
116 double rinv = 1./radius;
117 double k2dinv = 1./(1 + omega * d0);
118 if (k2dinv < 0.0) return -1;
119 double arg;
120
121 if (!lCurl) {
122 arg = d0 * rinv + 0.5*omega * rinv * r2d2 * k2dinv;
123 if (fabs(arg) > 1.0) return -1;
124 phiIntersect.setRad( phi0 + asin(arg) );
125 }
126 else {
127 arg = -d0 * rinv - 0.5*omega * rinv * r2d2 * k2dinv;
128 if (fabs(arg) > 1.0) return -1;
129 phiIntersect.setRad( phi0 + Constants::pi + asin(arg));
130 }
131
132 arg = 0.5*omega * sqrt(r2d2 * k2dinv);
133 arcLength = 2. * asin(arg) / omega;
134
135 return 0;
136}
137
138//----------------------------------------------------------------
139bool
141//----------------------------------------------------------------
142
143 return (track() == tk.track());
144}
145
146bool sortCluster(const RecCgemCluster* clusterA , const RecCgemCluster* clusterB){
147 return clusterA->getlayerid()<clusterB->getlayerid();
148}
149
150//yzhang for store to TDS
151void
152MdcTrack::storeTrack(int trackId, RecMdcTrackCol* trackList, RecMdcHitCol* hitList,int tkStat){
153 //check the fit succeeded
154 // if (status().failure()) { return; }
155
156 //get the results of the fit to this track
157 const TrkFit* fitresult = track().fitResult();
158 //check the fit worked
159 if (fitresult == 0) return;
160
161 //new a Rec. Track MdcTrack
162 RecMdcTrack* recMdcTrack = new RecMdcTrack();
163 const TrkHitList* aList = track().hits();
164 //some track info
165 const BField& theField = track().bField();
166 double Bz = theField.bFieldZ();
167 //Fit info
168 int hitId = 0;
169 int nHits=0;
170 int nSt=0;
171 //int nAct=0; int nSeg=0;
172 //int maxlay = 0; int minlay = 43; int seg[11];/* 11 slayer */ int segme;
173 //****************************
174 //* active flag open this
175 //****************************
176 //* if (allHit>0){
177 //* nHits = aList->nHit();//add inActive hit also
178 //* }else{
179 //* nHits = fitresult->nMdc();// = nActive()
180 //* }
181 //****************************
182 //for 5.1.0 use all hits
183 nHits = aList->nHit();
184 //****************************
185 // use active only
186 // nHits = fitresult->nMdc();// = nActive()
187 //****************************
188
189 int q = fitresult->charge();
190 double chisq = fitresult->chisq();
191 int nDof = fitresult->nDof();
192 //track parameters at closest approach to beamline
193 double fltLenPoca = 0.0;
194 TrkExchangePar helix = fitresult->helix(fltLenPoca);
195 //std::cout<< __FILE__ << " phi0 " << helix.phi0() << " omega " <<helix.omega()<<std::endl;
196 double phi0 = helix.phi0();
197 double tanDip = helix.tanDip();
198 //double z0 = helix.z0();
199 double d0 = helix.d0();
200 //momenta and position
201 //CLHEP::Hep3Vector mom = fitresult->momentum(fltLenPoca);
202 HepPoint3D poca = fitresult->position(fltLenPoca);
203
204 double helixPar[5];
205 //dro =-d0
206 helixPar[0] = -d0;
207 //phi0 = phi0 - pi/2 [0,2pi)
208 double tphi0 = phi0 - Constants::pi/2.;
209 if (tphi0 < 0. ) tphi0 += Constants::pi * 2.;
210 helixPar[1] = tphi0;
211 //kappa = q/pxy
212 double pxy = fitresult->pt();
213 if (pxy == 0.) helixPar[2] = 9999.;
214 else helixPar[2] = q/fabs(pxy);
215 if(pxy>9999.) helixPar[2] = 0.00001;
216 //dz = z0
217 helixPar[3] = helix.z0();
218 //tanl
219 helixPar[4] = tanDip;
220 //error
221 //V(Y)=S * V(X) * ST , mS = S , mVy = V(Y) , helix.covariance() = V(X)
222 HepSymMatrix mS(helix.params().num_row(),0);
223 mS[0][0]=-1.;//dr0=-d0
224 mS[1][1]=1.;
225 mS[2][2]=-333.567/Bz;//pxy -> cpa
226 mS[3][3]=1.;
227 mS[4][4]=1.;
228 HepSymMatrix mVy = helix.covariance().similarity(mS);
229 double errorMat[15];
230 int k = 0;
231 for (int ie = 0 ; ie < 5 ; ie ++){
232 for (int je = ie ; je < 5 ; je ++) {
233 errorMat[k] = mVy[ie][je];
234 k++;
235 }
236 }
237 double p,px,py,pz;
238 px = pxy * (-sin(helixPar[1]));
239 py = pxy * cos(helixPar[1]);
240 pz = pxy * helixPar[4];
241 p = sqrt(pxy*pxy + pz*pz);
242 //theta, phi
243 double theta = acos(pz/p);
244 double phi = atan2(py,px);
245 recMdcTrack->setTrackId(trackId);
246 recMdcTrack->setHelix(helixPar);
247 recMdcTrack->setCharge(q);
248 recMdcTrack->setPxy(pxy);
249 recMdcTrack->setPx(px);
250 recMdcTrack->setPy(py);
251 recMdcTrack->setPz(pz);
252 recMdcTrack->setP(p);
253 recMdcTrack->setTheta(theta);
254 recMdcTrack->setPhi(phi);
255 recMdcTrack->setPoca(poca);
256 recMdcTrack->setX(poca.x());//poca
257 recMdcTrack->setY(poca.y());
258 recMdcTrack->setZ(poca.z());
259 recMdcTrack->setR(sqrt(poca.x()*poca.x() + poca.y()*poca.y()));
260 HepPoint3D pivot(0.,0.,0.);
261 recMdcTrack->setPivot(pivot);
262 recMdcTrack->setVX0(0.);//pivot
263 recMdcTrack->setVY0(0.);
264 recMdcTrack->setVZ0(0.);
265 recMdcTrack->setError(errorMat);
266 recMdcTrack->setError(mVy);
267 recMdcTrack->setChi2(chisq);
268 recMdcTrack->setStat(tkStat);
269 recMdcTrack->setNhits(nHits);
270 //-----------hit list-------------
271 HitRefVec hitRefVec;
272 ClusterRefVec clusterRefVec;
273 vector<int> vecHits;
274 map<int,int> clusterFitStat;
275 //for fiterm
276 int maxLayerId = -1;
277 int minLayerId = 43;
278 double fiTerm = 999.;
279 const MdcRecoHitOnTrack* fiTermHot = NULL;
280 TrkHitList::hot_iterator hot = aList->begin();
281 for (;hot!=aList->end();hot++){
282 //cout<<__FILE__ <<" "<<__LINE__ <<" "<< typeid(*hot).name()<<endl;
283 if(typeid(*hot)==typeid(MdcRecoHitOnTrack) || typeid(*hot)==typeid(MdcHitOnTrack) /*|| typeid(*hot)==typeid(TrkHitOnTrk)*/ ){
284 const MdcRecoHitOnTrack* recoHot;
285 recoHot = dynamic_cast<const MdcRecoHitOnTrack*> (&(*hot));
286 //if (!recoHot->mdcHit()) return;
287 RecMdcHit* recMdcHit = new RecMdcHit;
288 //id
289 recMdcHit->setId(hitId);
290 //---------BESIII----------
291 //phiWire - phiHit <0 flagLR=0 left driftleft<0 ;
292 //phiWire - phiHit >0 flagLR=1 right driftright>0;
293 //flag = 2 ambig;
294 //-----Babar wireAmbig----
295 //-1 -> right, 0 -> don't know, +1 -> left
296 //+1 phiWire-phiHit<0 Left,
297 //-1 phiWire-phiHit>0 Right,
298 //0 don't know
299 //ambig() w.r.t track direction
300 //wireAmbig() w.r.t. wire location
301 double hotWireAmbig = recoHot->wireAmbig();
302 double driftDist = fabs(recoHot->drift());
303 double sigma = recoHot->hitRms();
304 double doca = fabs(recoHot->dcaToWire());
305 int flagLR=2;
306 if ( hotWireAmbig == 1){
307 flagLR = 0; //left driftDist <0
308 doca *= -1.;//2012-07-19
309 }else if( hotWireAmbig == -1){
310 flagLR = 1; //right driftDist >0
311 }else if( hotWireAmbig == 0){
312 flagLR = 2; //don't know
313 }
314 recMdcHit->setFlagLR(flagLR);
315 recMdcHit->setDriftDistLeft((-1)*driftDist);
316 recMdcHit->setErrDriftDistLeft(sigma);
317 recMdcHit->setDriftDistRight(driftDist);
318 recMdcHit->setErrDriftDistRight(sigma);
319 //Mdc Id
320 Identifier mdcId = recoHot->mdcHit()->digi()->identify();
321 recMdcHit->setMdcId(mdcId);
322 //corrected ADC
323
324 //contribution to chisquare
325 //fill chisq
326 double res=999.,rese=999.;
327 if (recoHot->resid(res,rese,false)){
328 }else{}
329 double deltaChi=0;
330 recoHot->getFitStuff(deltaChi);//yzhang open 2010-09-20
331 recMdcHit->setChisqAdd( deltaChi * deltaChi );
332 //set tracks containing this hit
333 recMdcHit->setTrkId(trackId);
334 //doca
335 recMdcHit->setDoca(doca);//doca sign left<0
336 //entrance angle
337
338 recMdcHit->setEntra(recoHot->entranceAngle());
339 //z of hit
340 HepPoint3D pos; Hep3Vector dir;
341 double fltLen = recoHot->fltLen();
342 recMdcHit->setFltLen(fltLen);
343 recoHot->getParentRep()->traj().getInfo(fltLen,pos,dir);
344 recMdcHit->setZhit(pos.z());
345 double tof = recoHot->getParentRep()->arrivalTime(fltLen);
346 recMdcHit->setTdc(recoHot->mdcHit()->tdcIndex());
347 recMdcHit->setAdc(recoHot->mdcHit()->adcIndex());
348 //drift time
349 recMdcHit->setDriftT(recoHot->mdcHit()->driftTime(tof,pos.z()));
350 //for fiterm
351 int layerId = recoHot->mdcHit()->layernumber();
352 int wireId = recoHot->mdcHit()->wirenumber();
353 //std::cout<<" MdcTrack::store() ("<<layerId<<","<<wireId<<") fltLen "<<fltLen<<" wireAmbig "<<hotWireAmbig<<" y "<<pos.y()<<std::endl;
354 // <<recoHot->entranceAngle()<<std::endl;
355 if (layerId >= maxLayerId){
356 maxLayerId = layerId;
357 fiTermHot = recoHot;
358 }
359 if (layerId < minLayerId){
360 minLayerId = layerId;
361 }
362 // status flag
363 if (recoHot->isActive()) {
364 recMdcHit->setStat(1);
365 }else{
366 recMdcHit->setStat(0);
367 }
368 // for 5.1.0 use all hits
369 if (recoHot->layer()->view()) {
370 ++nSt;
371 }
372 hitList->push_back(recMdcHit);
373 SmartRef<RecMdcHit> refHit(recMdcHit);
374 hitRefVec.push_back(refHit);
375 vecHits.push_back(mdcId.get_value());
376 ++hitId;
377 }else if(typeid(*hot)==typeid(CgemHitOnTrack)){
378 const CgemHitOnTrack* recoHot = dynamic_cast<const CgemHitOnTrack*> (&(*hot));
379 const RecCgemCluster* recCgemCluster = recoHot->baseHit();
380 int clusterid = recCgemCluster->getclusterid();
381 int stat = recoHot->isActive();
382 clusterFitStat[clusterid] = stat;
383 //cout<<clusterid<<" "<<stat<<endl;
384 //cout<<"clusterid:"<< recCgemCluster->getclusterid()<<" layer:"<<recCgemCluster->getlayerid()<<endl;
385 clusterRefVec.push_back(recCgemCluster);
386 }
387 }
388 std::sort(clusterRefVec.begin(),clusterRefVec.end(),sortCluster);
389 //fi terminal angle
390 if (fiTermHot!=NULL){
391 fiTerm=(1./sqrt(1.+tanDip*tanDip))*fiTermHot->fltLen()*helix.omega();
392 }
393 recMdcTrack->setFiTerm(fiTerm);
394 // number of stereo hits contained
395 recMdcTrack->setNdof(nDof);
396 recMdcTrack->setNster(nSt);
397 //recMdcTrack->setFirstLayer(maxLayerId);
398 //recMdcTrack->setLastLayer(minLayerId);
399 recMdcTrack->setFirstLayer(minLayerId);
400 recMdcTrack->setLastLayer(maxLayerId);
401 recMdcTrack->setVecHits(hitRefVec);
402 //recMdcTrack->setClusterFitStat(clusterFitStat);
403 //recMdcTrack->setVecClusters(clusterRefVec);
404 recMdcTrack->setVecClusters(clusterRefVec,clusterFitStat);
405 recMdcTrack->setNcluster(clusterRefVec.size());
406 trackList->push_back(recMdcTrack);
407
408 //cout<<__FILE__ <<" "<<__LINE__ << endl;
409 //cout<<"nDof "<<nDof<<endl;
410 //cout<<"nSter "<<nSt<<endl;
411 //cout<<"maxLayerId "<<maxLayerId<<endl;
412 //cout<<"minLayerId "<<minLayerId<<endl;
413 //cout<<"nHits "<<nHits<<endl;
414 //cout<<"nHots "<<track().hots()->nHit()<<endl;
415 //cout<<"nActs "<<track().hots()->nActive()<<endl;
416 //cout<<"nCluster "<<clusterRefVec.size()<<endl;
417 //cout<<"nActive "<<fitresult->nActive()<<endl;
418 //cout<<endl;
419
420 //TrkHotList* hotList = track().hots();
421 //int nAct = 0;
422 //cout<<hotList->end() - hotList->begin()<<endl;
423 //for(TrkHotList::nc_hot_iterator i = hotList->begin();i!=hotList->end();++i){
424 //cout<<i->layerNumber()<<" "<<i->isActive()<<" "<<i->whatView()<<endl;
425 //}
426 //hot = aList->begin();
427 //for (;hot!=aList->end();hot++){
428 //cout<<hot->layerNumber()<<" "<<hot->isActive()<<" "<<hot->whatView()<<endl;
429 //}
430
431 //cout<<__FILE__ <<" "<<__LINE__ << endl;
432 //for(int i=0;i<clusterRefVec.size();i++)
433 //{
434 //cout<<clusterRefVec[i]->getlayerid()<<endl;
435 //}
436 //hot = aList->begin();
437 //for (;hot!=aList->end();hot++){
438 //if(typeid(*hot)==typeid(MdcRecoHitOnTrack) || typeid(*hot)==typeid(MdcHitOnTrack) /*|| typeid(*hot)==typeid(TrkHitOnTrk)*/ ){
439 //const MdcRecoHitOnTrack* recoHot;
440 //recoHot = dynamic_cast<const MdcRecoHitOnTrack*> (&(*hot));
441 //int layerId = recoHot->mdcHit()->layernumber();
442 //int wireId = recoHot->mdcHit()->wirenumber();
443 //cout<<"hit ("<<layerId<<","<<wireId<<")"<<endl;
444 //}else if(typeid(*hot)==typeid(CgemHitOnTrack)){
445 //const CgemHitOnTrack* recoHot = dynamic_cast<const CgemHitOnTrack*> (&(*hot));
446 //const RecCgemCluster* recCgemCluster = recoHot->baseHit();
447 //cout<<"hit ("<<recCgemCluster->getlayerid()<<","<<recCgemCluster->getclusterid()<<")"<<endl;
448 //clusterRefVec.push_back(recCgemCluster);
449 //}
450 //}
451}//end of storeTrack
double sin(const BesAngle a)
Definition: BesAngle.h:210
double cos(const BesAngle a)
Definition: BesAngle.h:213
bool sortCluster(const RecCgemCluster *clusterA, const RecCgemCluster *clusterB)
double arg(const EvtComplex &c)
Definition: EvtComplex.hh:227
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
Definition: KKsem.h:33
bool sortCluster(const RecCgemCluster *clusterA, const RecCgemCluster *clusterB)
Definition: MdcTrack.cxx:146
ObjectVector< RecMdcHit > RecMdcHitCol
Definition: RecMdcHit.h:99
SmartRefVector< RecCgemCluster > ClusterRefVec
Definition: RecMdcTrack.h:28
ObjectVector< RecMdcTrack > RecMdcTrackCol
Definition: RecMdcTrack.h:102
SmartRefVector< RecMdcHit > HitRefVec
Definition: RecMdcTrack.h:26
void setRad(const double)
Definition: BesAngle.h:133
const RecCgemCluster * baseHit() const
static const double pi
Definition: Constants.h:38
void setFirstLayer(const int id)
Definition: DstMdcTrack.h:101
void setPxy(const double pxy)
Definition: DstMdcTrack.h:86
void setTrackId(const int trackId)
Definition: DstMdcTrack.h:84
void setPy(const double py)
Definition: DstMdcTrack.h:88
void setZ(const double z)
Definition: DstMdcTrack.h:95
void setNster(const int ns)
Definition: DstMdcTrack.h:100
void setX(const double x)
Definition: DstMdcTrack.h:93
void setError(double err[15])
void setNdof(const int ndof)
Definition: DstMdcTrack.h:99
void setTheta(const double theta)
Definition: DstMdcTrack.h:91
void setStat(const int stat)
Definition: DstMdcTrack.h:97
void setP(const double p)
Definition: DstMdcTrack.h:90
void setHelix(double helix[5])
void setPoca(double poca[3])
void setR(const double r)
Definition: DstMdcTrack.h:96
void setCharge(const int charge)
Definition: DstMdcTrack.h:85
void setLastLayer(const int id)
Definition: DstMdcTrack.h:102
void setY(const double y)
Definition: DstMdcTrack.h:94
void setChi2(const double chi)
Definition: DstMdcTrack.h:98
void setPhi(const double phi)
Definition: DstMdcTrack.h:92
void setPz(const double pz)
Definition: DstMdcTrack.h:89
void setPx(const double px)
Definition: DstMdcTrack.h:87
value_type get_value() const
Definition: Identifier.h:163
int wireAmbig() const
double dcaToWire() const
double drift() const
Definition: MdcHitOnTrack.h:75
double entranceAngle() const
const MdcLayer * layer() const
const MdcDigi * digi() const
Definition: MdcHit.h:55
unsigned layernumber() const
Definition: MdcHit.h:61
unsigned wirenumber() const
Definition: MdcHit.h:62
unsigned adcIndex() const
Definition: MdcHit.h:64
double driftTime(double tof, double z) const
Definition: MdcHit.cxx:142
unsigned tdcIndex() const
Definition: MdcHit.h:63
int view(void) const
Definition: MdcLayer.h:28
const MdcHit * mdcHit() const
int projectToR(double radius, BesAngle &phiIntersect, int lCurl=0) const
Definition: MdcTrack.cxx:68
TrkRecoTrk & track()
Definition: MdcTrack.h:27
bool operator==(const MdcTrack &tk) const
Definition: MdcTrack.cxx:140
~MdcTrack()
Definition: MdcTrack.cxx:63
void storeTrack(int trackId, RecMdcTrackCol *trackList, RecMdcHitCol *hitList, int tkStat)
Definition: MdcTrack.cxx:152
MdcTrack(TrkRecoTrk *aTrack)
Definition: MdcTrack.cxx:45
virtual Identifier identify() const
Definition: RawData.cxx:15
int getclusterid(void) const
int getlayerid(void) const
void setMdcId(Identifier mdcid)
Definition: RecMdcHit.h:67
void setErrDriftDistRight(double erddr)
Definition: RecMdcHit.h:63
void setFltLen(double fltLen)
Definition: RecMdcHit.h:74
void setErrDriftDistLeft(double erddl)
Definition: RecMdcHit.h:62
void setDriftDistLeft(double ddl)
Definition: RecMdcHit.h:60
void setDoca(double doca)
Definition: RecMdcHit.h:71
void setStat(int stat)
Definition: RecMdcHit.h:66
void setTdc(double tdc)
Definition: RecMdcHit.h:68
void setAdc(double adc)
Definition: RecMdcHit.h:69
void setFlagLR(int lr)
Definition: RecMdcHit.h:65
void setChisqAdd(double pChisq)
Definition: RecMdcHit.h:64
void setZhit(double zhit)
Definition: RecMdcHit.h:73
void setDriftT(double driftT)
Definition: RecMdcHit.h:70
void setDriftDistRight(double ddr)
Definition: RecMdcHit.h:61
void setTrkId(int trkid)
Definition: RecMdcHit.h:59
void setId(int id)
Definition: RecMdcHit.h:58
void setEntra(double entra)
Definition: RecMdcHit.h:72
void setVecClusters(ClusterRefVec vecclusters)
Definition: RecMdcTrack.cxx:86
void setPivot(const HepPoint3D &pivot)
Definition: RecMdcTrack.h:79
void setVZ0(double z0)
Definition: RecMdcTrack.h:76
void setVY0(double y0)
Definition: RecMdcTrack.h:75
void setVecHits(HitRefVec vechits)
Definition: RecMdcTrack.cxx:80
void setNhits(int nhits)
Definition: RecMdcTrack.h:78
void setFiTerm(double fiterm)
Definition: RecMdcTrack.h:77
void setNcluster(int ncluster)
Definition: RecMdcTrack.h:83
void setVX0(double x0)
Definition: RecMdcTrack.h:74
virtual void getInfo(double fltLen, HepPoint3D &pos, Hep3Vector &direction) const =0
virtual double pt(double fltL=0.) const =0
virtual double chisq() const =0
virtual int charge() const =0
virtual int nDof() const =0
virtual const TrkDifTraj & traj() const =0
virtual HepPoint3D position(double fltL) const =0
double phi0() const
double omega() const
double z0() const
const HepVector & params() const
double d0() const
double tanDip() const
const HepSymMatrix & covariance() const
Definition: TrkFit.h:23
virtual TrkExchangePar helix(double fltL) const =0
hot_iterator begin() const
Definition: TrkHitList.h:45
unsigned nHit() const
Definition: TrkHitList.h:44
hot_iterator end() const
Definition: TrkHitList.h:46
double fltLen() const
Definition: TrkHitOnTrk.h:91
double resid(bool exclude=false) const
double hitRms() const
Definition: TrkHitOnTrk.h:89
const TrkRep * getParentRep() const
Definition: TrkHitOnTrk.h:73
bool isActive() const
Definition: TrkHitOnTrk.h:200
TrkErrCode getFitStuff(HepVector &derivs, double &deltaChi) const
TrkHitList * hits()
Definition: TrkRecoTrk.h:107
const BField & bField() const
Definition: TrkRecoTrk.h:82
const TrkFit * fitResult() const
Definition: TrkRecoTrk.cxx:387
virtual double arrivalTime(double fltL) const
Definition: TrkRep.cxx:192
TrkRecoTrk * makeTrack(const TrkExchangePar &helix, const double chi2, const TrkContext &, double trackT0) const