BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
FTFinder Class Reference

#include <FTFinder.h>

Public Member Functions

void setAlgorithmPointer (Algorithm *)
 returns FTFinder pointer
 
 FTFinder ()
 Constructors and destructor.
 
void init ()
 initializer(creates geometry)
 
void term ()
 terminator
 
void begin_run ()
 begin run function(reads constants)
 
void event ()
 track finder core
 
FTSuperLayersuperLayer (int id) const
 returns superlayer
 
FTList< FTTrack * > & tracks (void) const
 returns track list
 
CLHEP::Hep3Vector vertex (void) const
 returns event primary vertex
 
int getWireId (FTWire *) const
 returns wire ID for given FTWire object
 
float t2x (const FTLayer &l, const float t) const
 convert t to x
 
float x2t (const FTLayer &l, const float x) const
 convert x to t
 
void setBunchtime (double bunchtime)
 set bunchtime for MC events
 
void setT0cal (double t0cal)
 set crude mdc time calibconst (~200 ns) for t0 calculation
 

Public Attributes

int eventNo
 
int runNo
 
int expflag
 
float t0Estime
 
float tOffSet
 
float evtTiming
 
const HepPoint3D pivot
 
float Testime
 
int i_rPhiFit
 
int tEstFlag
 
FTList< float > tEstime [10]
 

Detailed Description

Definition at line 41 of file FTFinder.h.

Constructor & Destructor Documentation

◆ FTFinder()

FTFinder::FTFinder ( )

Constructors and destructor.

Definition at line 121 of file FTFinder.cxx.

122 :// findEventVertex(1),
123 // evtTimeCorr(1),
124
125 // minPt(0.07),
126 // minDr(7.5),
127 // tOffSet(0.),
128 // xtCoEff(0.0344),
129 // doIt(1),
130#ifndef OnlineMode
131 // mkMdst(true),
132#endif
133 // mkTds(true),
134 tOffSet(0.),
135 t0Estime(-999.),
136 tEstFlag(0),
137
138 _wire(NULL),
139 _layer(NULL),
140 _superLayer(NULL),
141 _tracks(*(new FTList<FTTrack *>(20))),
142 _linkedSegments(new FTList<FTSegment *>(6)),
143 _axialSegCollect(10),
144 _vx(0.),
145 _vy(0.),
146 _vz(0.),
147 _ExpNo(0),
148 _RunNo(0),
149 m_total_trk(0),
150 pivot(0,0,0)
151{
152 StatusCode scmgn = Gaudi::svcLocator()->service("MagneticFieldSvc",m_pmgnIMF);
153 if(scmgn!=StatusCode::SUCCESS) {
154 std::cout<< "Unable to open Magnetic field service"<<std::endl;
155 }
156}
#define NULL
float t0Estime
Definition FTFinder.h:161
int tEstFlag
Definition FTFinder.h:167
float tOffSet
Definition FTFinder.h:162
const HepPoint3D pivot
Definition FTFinder.h:164

Member Function Documentation

◆ begin_run()

void FTFinder::begin_run ( )

begin run function(reads constants)

Definition at line 331 of file FTFinder.cxx.

331 {
332
333 eventNo = 0;
334 runNo=0;
335 expflag=0;
336 if (!param->_doIt) return;
337 _ExpNo = 0;
338 _RunNo = 0;
339
340 IMdcGeomSvc* mdcGeomSvc;
341 StatusCode sc = Gaudi::svcLocator()->service("MdcGeomSvc", mdcGeomSvc);
342
343 if (sc == StatusCode::SUCCESS) {
344 //mdcGeomSvc->Dump();
345
346 } else {
347 return ;
348 }
349
350 const int Nwire = mdcGeomSvc->getWireSize();
351 const int Nlyr = mdcGeomSvc->getLayerSize();
352 const int Nsup = mdcGeomSvc->getSuperLayerSize();
353
354 if(!Nwire || !Nlyr){
355 std::cerr << "FTFINDER::GEOCDC not found (please put cdctable before l4)" << std::endl;
356 std::cerr << "JOB will stop" << std::endl;
357 exit(-1);
358 }
359
360 if (!_wire) _wire = (FTWire *) malloc((Nwire+1) * sizeof(FTWire));
361 if (!_layer) _layer = (FTLayer *) malloc(Nlyr * sizeof(FTLayer));
362 if (!_superLayer) _superLayer =
363 (FTSuperLayer *) malloc(Nsup * sizeof(FTSuperLayer));
364
365 if (!_wire || !_layer || !_superLayer){
366 std::cerr << "FTFINDER::Cannot allocate geometries" << std::endl;
367 std::cerr << "JOB will stop" << std::endl;
368 exit(-1);
369 }
370
371 int superLayerID = 0;
372 int layerID = 0;
373 int localLayerID = 0;
374 int localWireID = 0;
375 int localID = 0;
376 int wireID;
377 MdcGeoLayer * layer_back = NULL;
378 MdcGeoSuper * superLayer_back = NULL;
379 int k = 0;
380 int Nlayer[12];
381 int Nlocal[12];
382 int NlocalWireID[44];
383
384 for (wireID = 0;wireID <= Nwire; wireID++){
385 MdcGeoLayer * layer = (wireID==Nwire) ? NULL : mdcGeomSvc->Wire(wireID)->Lyr();
386 if (layer != layer_back){
387 layer_back = layer;
388 MdcGeoSuper * superLayer = (wireID==Nwire) ? NULL : mdcGeomSvc->Layer(layerID)->Sup();
389 if (superLayer != superLayer_back){
390 superLayer_back = superLayer;
391 Nlayer[k] = localLayerID;
392 Nlocal[k] = localID;
393 localLayerID = 0;
394 k++;
395 }
396 NlocalWireID[layerID] = localWireID;
397 localID = 0;
398 localWireID = 0;
399 layerID++;
400 localLayerID++;
401 }
402 localID++;
403 localWireID++;
404 }
405
406
407 superLayerID = -1;
408 layerID = -1;
409 localLayerID = 0;
410 localID = 0;
411 layer_back = NULL;
412 superLayer_back = NULL;
413 for (wireID = 0;wireID < Nwire; wireID++){
414 MdcGeoLayer * layer = mdcGeomSvc->Wire(wireID)->Lyr();
415 if (layer != layer_back){
416 layer_back = layer;
417 MdcGeoSuper * superLayer = mdcGeomSvc->Layer(layerID+1)->Sup();
418 if (superLayer != superLayer_back){
419 superLayer_back = superLayer;
420 // initialize super-layer
421 superLayerID++;
422 new(_superLayer+superLayerID) FTSuperLayer(wireID,
423 Nlocal[superLayerID+1],
424 layerID+1,
425 Nlayer[superLayerID+1],
426 superLayerID);
427 localLayerID=0;
428 }
429 // initialize layer
430 layerID++;
431 double slantWithSymbol = (mdcGeomSvc->Layer(layerID)->Slant())*(mdcGeomSvc->Layer(layerID)->Sup()->Type());
432 // slant in new MdcGeomSvc include symbol
433 new(_layer+layerID) FTLayer(0.1*layer->Radius(), layer->Slant(),
434 0.1*(+layer->Length()/2), 0.1*(-layer->Length()/2), 0.1*layer->Offset(),
435 layerID, localLayerID++, NlocalWireID[layerID+1],
436 _superLayer[superLayerID]);
437 localID = 0;
438 }
439 // initialize wire
440 const MdcGeoWire * wire = mdcGeomSvc->Wire(wireID);
441 if (superLayerID == 2 || superLayerID == 3 ||
442 superLayerID == 4 || superLayerID == 9 ||
443 superLayerID == 10){ // axial wire
444 new(_wire+wireID) FTWire(0.1*(float)0.5*(wire->Backward().x()+wire->Forward().x()),
445 0.1*(float)0.5*(wire->Backward().y()+wire->Forward().y()),
446 0.,0.,
447 _layer[layerID], localID++, _wire+Nwire);
448
449 }else{ // stereo wire
450 new(_wire+wireID) FTWire(0.1*(float)wire->Backward().x(),
451 0.1*(float)wire->Backward().y(),
452 0.1*(float)wire->Forward().x() - 0.1*(float)wire->Backward().x(),
453 0.1*(float)wire->Forward().y() - 0.1*(float)wire->Backward().y(),
454 _layer[layerID], localID++, _wire+Nwire);
455 }
456 }
457
458 // make virtual wire object for the pointer of boundary's neighbor
459 new(_wire+Nwire) FTWire();
460
461 for (int i = 0; i < Nwire; i++){
462 (*(_wire+i)).initNeighbor();
463 }
464
465 _widbase[0] = 0;
466 for (int k = 1; k < 43; k++){
467 _widbase[k] = _widbase[k-1] + (*(_layer+k-1)).NWire();
468 }
469}
FTSuperLayer * superLayer(int id) const
returns superlayer
Definition FTFinder.h:196
int eventNo
Definition FTFinder.h:158
int runNo
Definition FTFinder.h:159
int expflag
Definition FTFinder.h:160
virtual const int getLayerSize()=0
virtual const MdcGeoLayer *const Layer(unsigned id)=0
virtual const MdcGeoWire *const Wire(unsigned id)=0
virtual const int getWireSize()=0
virtual const int getSuperLayerSize()=0
double Radius(void) const
double Slant(void) const
double Length(void) const
MdcGeoSuper * Sup(void) const
double Offset(void) const
MdcGeoLayer * Lyr(void) const
Definition MdcGeoWire.h:140
HepPoint3D Forward(void) const
Definition MdcGeoWire.h:129
HepPoint3D Backward(void) const
Definition MdcGeoWire.h:128
const int _doIt

Referenced by MdcFastTrkAlg::beginRun().

◆ event()

void FTFinder::event ( )

track finder core

– vertex(r-phi) fit and event timing correction

– 2D track re-fitting

Definition at line 472 of file FTFinder.cxx.

472 {
473 IMessageSvc *msgSvc;
474 Gaudi::svcLocator()->service("MessageSvc", msgSvc);
475
476 MsgStream log(msgSvc, "FTFinder");
477
478 IDataProviderSvc* eventSvc = NULL;
479 Gaudi::svcLocator()->service("EventDataSvc", eventSvc);
480
481 if (!param->_doIt) return;
482 //--
483 // clear old information
484 //--
485 clear();
486
487 //check whether Recon already registered
488 DataObject *aReconEvent;
489 eventSvc->findObject("/Event/Recon",aReconEvent);
490 if(!aReconEvent) {
491 // register ReconEvent Data Object to TDS;
492 ReconEvent* recevt = new ReconEvent;
493 StatusCode sc = eventSvc->registerObject("/Event/Recon",recevt );
494 if(sc!=StatusCode::SUCCESS) {
495 log << MSG::FATAL << "Could not register ReconEvent" <<endreq;
496 return;
497 }
498 }
499 //register Event start time
500 IDataManagerSvc *dataManSvc = dynamic_cast<IDataManagerSvc*> (eventSvc);
501 DataObject *aEsTimeEvent;
502 eventSvc->findObject("/Event/Recon/RecEsTimeCol",aEsTimeEvent);
503 if(aEsTimeEvent != NULL) {
504 dataManSvc->clearSubTree("/Event/Recon/RecEsTimeCol");
505 eventSvc->unregisterObject("/Event/Recon/RecEsTimeCol");
506 }
507
508 RecEsTimeCol *aRecEsTimeCol = new RecEsTimeCol;
509 StatusCode est;
510 est = eventSvc->registerObject("/Event/Recon/RecEsTimeCol",aRecEsTimeCol);
511 if( est.isFailure() ) {
512 log << MSG::FATAL << "Could not register RecEsTimeCol" << endreq;
513 return;
514 }
515 log << MSG::DEBUG << "RecEsTimeCol registered successfully!" <<endreq;
516 //--
517 // update wirehit information
518 //--
519 updateMdc();
520
521 //--
522 // segment finding
523 //--
524 for (int i = 0; i^11; i++){
525 (*(_superLayer+i)).mkSegmentList();
526 }
527
528 //--
529 // reduce noise and get start time from segment fit
530 for(int j=0;j<10;j++){
531 (*(_superLayer+j)).reduce_noise(tEstime);
532 }
533
534 getTestime();
535
536 //--
537 // register t0Estime to TDS
538 //--
539 //if(t0Estime!=-999&&t0Estime<24) registT0();
540
541 //--
542 // axial segment linking
543 //--
544 mkTrackList();
545
546 //--
547 // 2D track fitting
548 //--
549 //(*_superLayer).reAppendSalvage();
550
551 int n = _tracks.length();
552 log << MSG::DEBUG << "number of 2D tracks: " << n <<endreq;
553#ifndef OnlineMode
554 num_2Dtrk+=n;
555#endif
556 for (int i = 0; i^n; i++){
557 if (!_tracks[i]->r_phiFit()){
558 delete _tracks[i];
559 log<<MSG::DEBUG<<"===========>deleted 2D track : "<< i+1 <<endreq;
560 n = _tracks.remove(i);
561 }
562 }
563
564 if(t0Estime!=-999){
565 //begin to make Event start time
566 RecEsTime *arecestime = new RecEsTime;
567 arecestime -> setTest(t0Estime);
568 arecestime -> setStat(tEstFlag);
569 aRecEsTimeCol->push_back(arecestime);
570 }
571 if (!n){
572 makeTds();
573 return;
574 }
575
576 ///--
577 /// vertex(r-phi) fit and event timing correction
578 //--
579 int vtx_flag = VertexFit(0);
580 evtTiming = (param->_evtTimeCorr) ? CorrectEvtTiming() : 0;
581
582 ///--
583 /// 2D track re-fitting
584 //--
585 if(param->_hitscut==1){
586 for (int i = 0; i^n; i++){
587 _tracks[i]->r_phiReFit(_vx, _vy, vtx_flag);
588 }
589 }
590
591 //--
592 //cut bad hits from 2D track re-fitting
593 if(param->_hitscut==2){
594 for (int i = 0; i^n; i++){
595 for(int j = 0; j<2; j++){
596 i_rPhiFit= _tracks[i]->r_phi2Fit(_vx, _vy, vtx_flag);
597 if(i_rPhiFit!=-99) _tracks[i]->r_phi3Fit(i_rPhiFit,_vx, _vy, vtx_flag);
598 }
599 _tracks[i]->r_phi4Fit(_vx, _vy, vtx_flag);
600 }
601 }
602
603 //--
604 // stereo segment linking
605 //--
606 mkTrack3D();
607
608 //--
609 // final track fittng
610 //--
611 n = _tracks.length();
612 log<< MSG::DEBUG <<"number of 3D tracks: " << n << endreq;
613
614#ifndef OnlineMode
615 num_3Dtrk+=n;
616#endif
617
618 for (int i = 0; i^n; i++) {
619
620#ifndef OnlineMode
621 log<<MSG::DEBUG<<"=======>3D track: "<<i<<endreq;
622 _tracks[i]->printout();
623#endif
624
625 if (_tracks[i]->get_nhits() < 18) {
626 delete _tracks[i];
627 log<< MSG::DEBUG <<"================>deleted 3D track : "<< i+1 <<endreq;
628 n = _tracks.remove(i);
629 }
630 }
631
632 if (!n){
633 makeTds();
634 return;
635 }
636
637 for (int i = 0; i^n; i++){
638 _tracks[i]->s_zFit();
639 }
640
641 //--
642 // find primary event vertex
643 //--
644 if (param->_findEventVertex){
645 VertexFit(1);
646 }
647
648 n = _tracks.length();
649 log<<MSG::DEBUG<<"final number of tracks: " << n << endreq;
650
651#ifndef OnlineMode
653 if (param->_mkMdst) makeMdst();
654#endif
655
656 //--
657 // output tracking result into TDS
658 // by wangdy
659 //--
660 if (param->_mkTds) makeTds();
661
662}
const Int_t n
int num_3Dtrk
Definition FTFinder.cxx:101
int num_2Dtrk
int num_finaltrk
Definition FTFinder.cxx:101
ObjectVector< RecEsTime > RecEsTimeCol
Definition RecEsTime.h:53
IMessageSvc * msgSvc()
int i_rPhiFit
Definition FTFinder.h:166
float evtTiming
Definition FTFinder.h:163
FTList< float > tEstime[10]
Definition FTFinder.h:168
int remove(int &)
remove objects by index and returns decremented index and length
Definition FTList.h:140
int length(void) const
returns the length of the list
Definition FTList.h:245
const int _findEventVertex
const bool _mkMdst
const int _hitscut
const int _evtTimeCorr
const bool _mkTds

Referenced by MdcFastTrkAlg::execute().

◆ getWireId()

int FTFinder::getWireId ( FTWire * w) const
inline

returns wire ID for given FTWire object

Definition at line 208 of file FTFinder.h.

208 {
209 return ((long)w - (long)_wire)/sizeof(FTWire);
210}
double w

◆ init()

void FTFinder::init ( )

initializer(creates geometry)

Definition at line 159 of file FTFinder.cxx.

160{
161 if (!param->_doIt) return;
162// param->updateAlpha();
163
164 // Get the Particle Properties Service
165 IPartPropSvc* p_PartPropSvc;
166 static const bool CREATEIFNOTTHERE(true);
167 StatusCode PartPropStatus = Gaudi::svcLocator()->service("PartPropSvc", p_PartPropSvc, CREATEIFNOTTHERE);
168 if (!PartPropStatus.isSuccess() || 0 == p_PartPropSvc) {
169 // log << MSG::ERROR << " Could not initialize Particle Properties Service" << endreq;
170 std::cerr << "Could not initialize Particle Properties Service" << std::endl;
171 // return PartPropStatus;
172 return;
173 }
174 m_particleTable = p_PartPropSvc->PDT();
175
176 // IRawDataProviderSvc* m_rawDataProviderSvc;
177 StatusCode RawData = Gaudi::svcLocator()-> service ("RawDataProviderSvc", m_rawDataProviderSvc, CREATEIFNOTTHERE);
178 if ( !RawData.isSuccess() ){
179 std::cerr << "Could not load RawDataProviderSvc!" << m_rawDataProviderSvc << endreq;
180 return;
181 }
182
183// IMdcGeomSvc* mdcGeomSvc;
184// StatusCode sc = Gaudi::svcLocator()->service("MdcGeomSvc", mdcGeomSvc);
185//
186// if (sc == StatusCode::SUCCESS) {
187// //mdcGeomSvc->Dump();
188//
189// } else {
190// return ;
191// }
192//
193// const int Nwire = mdcGeomSvc->getWireSize();
194// const int Nlyr = mdcGeomSvc->getLayerSize();
195// const int Nsup = mdcGeomSvc->getSuperLayerSize();
196//
197// if(!Nwire || !Nlyr){
198// std::cerr << "FTFINDER::GEOCDC not found (please put cdctable before l4)" << std::endl;
199// std::cerr << "JOB will stop" << std::endl;
200// exit(-1);
201// }
202//
203// if (!_wire) _wire = (FTWire *) malloc((Nwire+1) * sizeof(FTWire));
204// if (!_layer) _layer = (FTLayer *) malloc(Nlyr * sizeof(FTLayer));
205// if (!_superLayer) _superLayer =
206// (FTSuperLayer *) malloc(Nsup * sizeof(FTSuperLayer));
207//
208// if (!_wire || !_layer || !_superLayer){
209// std::cerr << "FTFINDER::Cannot allocate geometries" << std::endl;
210// std::cerr << "JOB will stop" << std::endl;
211// exit(-1);
212// }
213//
214// int superLayerID = 0;
215// int layerID = 0;
216// int localLayerID = 0;
217// int localWireID = 0;
218// int localID = 0;
219// int wireID;
220// MdcGeoLayer * layer_back = NULL;
221// MdcGeoSuper * superLayer_back = NULL;
222// int k = 0;
223// int Nlayer[12];
224// int Nlocal[12];
225// int NlocalWireID[44];
226//
227// for (wireID = 0;wireID <= Nwire; wireID++){
228// MdcGeoLayer * layer = (wireID==Nwire) ? NULL : mdcGeomSvc->Wire(wireID)->Lyr();
229// if (layer != layer_back){
230// layer_back = layer;
231// MdcGeoSuper * superLayer = (wireID==Nwire) ? NULL : mdcGeomSvc->Layer(layerID)->Sup();
232// if (superLayer != superLayer_back){
233// superLayer_back = superLayer;
234// Nlayer[k] = localLayerID;
235// Nlocal[k] = localID;
236// localLayerID = 0;
237// k++;
238// }
239// NlocalWireID[layerID] = localWireID;
240// localID = 0;
241// localWireID = 0;
242// layerID++;
243// localLayerID++;
244// }
245// localID++;
246// localWireID++;
247// }
248//
249//
250// superLayerID = -1;
251// layerID = -1;
252// localLayerID = 0;
253// localID = 0;
254// layer_back = NULL;
255// superLayer_back = NULL;
256// for (wireID = 0;wireID < Nwire; wireID++){
257// MdcGeoLayer * layer = mdcGeomSvc->Wire(wireID)->Lyr();
258// if (layer != layer_back){
259// layer_back = layer;
260// MdcGeoSuper * superLayer = mdcGeomSvc->Layer(layerID+1)->Sup();
261// if (superLayer != superLayer_back){
262// superLayer_back = superLayer;
263// // initialize super-layer
264// superLayerID++;
265// new(_superLayer+superLayerID) FTSuperLayer(wireID,
266// Nlocal[superLayerID+1],
267// layerID+1,
268// Nlayer[superLayerID+1],
269// superLayerID);
270// localLayerID=0;
271// }
272// // initialize layer
273// layerID++;
274// double slantWithSymbol = (mdcGeomSvc->Layer(layerID)->Slant())*(mdcGeomSvc->Layer(layerID)->Sup()->Type());
275// // slant in new MdcGeomSvc include symbol
276// new(_layer+layerID) FTLayer(0.1*layer->Radius(), layer->Slant(),
277// 0.1*(+layer->Length()/2), 0.1*(-layer->Length()/2), 0.1*layer->Offset(),
278// layerID, localLayerID++, NlocalWireID[layerID+1],
279// _superLayer[superLayerID]);
280// localID = 0;
281// }
282// // initialize wire
283// const MdcGeoWire * wire = mdcGeomSvc->Wire(wireID);
284// if (superLayerID == 2 || superLayerID == 3 ||
285// superLayerID == 4 || superLayerID == 9 ||
286// superLayerID == 10){ // axial wire
287// new(_wire+wireID) FTWire(0.1*(float)0.5*(wire->Backward().x()+wire->Forward().x()),
288// 0.1*(float)0.5*(wire->Backward().y()+wire->Forward().y()),
289// 0.,0.,
290// _layer[layerID], localID++, _wire+Nwire);
291//
292// }else{ // stereo wire
293// new(_wire+wireID) FTWire(0.1*(float)wire->Backward().x(),
294// 0.1*(float)wire->Backward().y(),
295// 0.1*(float)wire->Forward().x() - 0.1*(float)wire->Backward().x(),
296// 0.1*(float)wire->Forward().y() - 0.1*(float)wire->Backward().y(),
297// _layer[layerID], localID++, _wire+Nwire);
298// }
299// }
300//
301// // make virtual wire object for the pointer of boundary's neighbor
302// new(_wire+Nwire) FTWire();
303//
304// for (int i = 0; i < Nwire; i++){
305// (*(_wire+i)).initNeighbor();
306// }
307//
308// _widbase[0] = 0;
309// for (int k = 1; k < 43; k++){
310// _widbase[k] = _widbase[k-1] + (*(_layer+k-1)).NWire();
311// }
312
313 //minPt = (float)param->_minPt;
314 //minDr = (float)param->_minDr;
315 //xtCoEff = param->_xtCoEff;
316}

Referenced by MdcFastTrkAlg::initialize().

◆ setAlgorithmPointer()

void FTFinder::setAlgorithmPointer ( Algorithm * alg)
inline

returns FTFinder pointer

Definition at line 233 of file FTFinder.h.

233 {
234 m_algorithm = alg;
235}

Referenced by MdcFastTrkAlg::initialize().

◆ setBunchtime()

void FTFinder::setBunchtime ( double bunchtime)
inline

set bunchtime for MC events

Definition at line 85 of file FTFinder.h.

85{_bunchtime=bunchtime;};

Referenced by MdcFastTrkAlg::initialize().

◆ setT0cal()

void FTFinder::setT0cal ( double t0cal)
inline

set crude mdc time calibconst (~200 ns) for t0 calculation

Definition at line 87 of file FTFinder.h.

87{_t0cal=t0cal;};

Referenced by MdcFastTrkAlg::initialize().

◆ superLayer()

FTSuperLayer * FTFinder::superLayer ( int id) const
inline

returns superlayer

Definition at line 196 of file FTFinder.h.

196 {
197 return _superLayer + id;
198}

Referenced by begin_run(), and FTTrack::r_phiFit().

◆ t2x()

float FTFinder::t2x ( const FTLayer & l,
const float t ) const
inline

convert t to x

Definition at line 221 of file FTFinder.h.

222{
223 float x = (t>0.0f) ?((param->_xtCoEff))*sqrt(t*l.csize()) : 0.0f;
224 if ( x > 0.47f*l.csize() ){
225 x = 0.0004f*t + 0.47f*l.csize()*(1.0f-0.0004f*0.47f/((param->_xtCoEff)*(param->_xtCoEff)));
226 }
227
228 return x;
229}
Double_t x[10]
TTree * t
Definition binning.cxx:23
double csize(void) const
returns cell size
Definition FTLayer.h:190
const float _xtCoEff

Referenced by FTTrack::r_phi2Fit(), FTTrack::r_phi3Fit(), FTTrack::r_phi4Fit(), FTTrack::r_phiReFit(), and FTTrack::s_zFit().

◆ term()

void FTFinder::term ( )

terminator

Definition at line 319 of file FTFinder.cxx.

320{
321 if (param->_doIt) clear();
322 delete &_tracks;
323 delete _linkedSegments;
324 if (!param->_doIt) return;
325 free(_wire);
326 free(_layer);
327 free(_superLayer);
328}

Referenced by MdcFastTrkAlg::finalize().

◆ tracks()

FTList< FTTrack * > & FTFinder::tracks ( void ) const
inline

returns track list

Definition at line 202 of file FTFinder.h.

202 {
203 return _tracks;
204}

◆ vertex()

Hep3Vector FTFinder::vertex ( void ) const

returns event primary vertex

Definition at line 1641 of file FTFinder.cxx.

1641 {
1642 return Hep3Vector(_vx,_vy,_vz);
1643}

◆ x2t()

float FTFinder::x2t ( const FTLayer & l,
const float x ) const
inline

convert x to t

Definition at line 214 of file FTFinder.h.

215{
216 return (x*x) / (param->_xtCoEff * param->_xtCoEff *l.csize());
217}

Member Data Documentation

◆ eventNo

int FTFinder::eventNo

Definition at line 158 of file FTFinder.h.

Referenced by begin_run().

◆ evtTiming

float FTFinder::evtTiming

◆ expflag

int FTFinder::expflag

Definition at line 160 of file FTFinder.h.

Referenced by begin_run().

◆ i_rPhiFit

int FTFinder::i_rPhiFit

Definition at line 166 of file FTFinder.h.

Referenced by event().

◆ pivot

◆ runNo

int FTFinder::runNo

Definition at line 159 of file FTFinder.h.

Referenced by begin_run().

◆ t0Estime

float FTFinder::t0Estime

Definition at line 161 of file FTFinder.h.

Referenced by event().

◆ tEstFlag

int FTFinder::tEstFlag

Definition at line 167 of file FTFinder.h.

Referenced by event().

◆ Testime

float FTFinder::Testime

Definition at line 165 of file FTFinder.h.

◆ tEstime

FTList<float> FTFinder::tEstime[10]

Definition at line 168 of file FTFinder.h.

Referenced by event().

◆ tOffSet

float FTFinder::tOffSet

Definition at line 162 of file FTFinder.h.


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