#include <AlgFitTrackSA.h>
Inheritance diagram for AlgFitTrackSA:

|
|
Definition at line 73 of file AlgFitTrackSA.cxx. References MSG. 00073 : 00074 fBegPlane(0), fEndPlane(0), fIdir(0), fPrange(0), fBField(0), 00075 fData(0), fTrackIn0(NTrackParams), fCpu(0), 00076 fLastGoodFit(0), fFitNtp(0) { 00077 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::Constructor\n"; 00078 }
|
|
|
Definition at line 81 of file AlgFitTrackSA.cxx. References CleanupFit(), and MSG. 00081 {
00082 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::Destructor\n";
00083 CleanupFit();
00084 }
|
|
|
Definition at line 415 of file AlgFitTrackSA.cxx. References falgcfg, fData, Registry::GetInt(), DataFT::GetNUHitsUsed(), and DataFT::GetNVHitsUsed(). Referenced by DoFit(). 00415 {
00416
00417 if ( fData->GetNUHitsUsed() < falgcfg.GetInt("NHitsInViewMin") ||
00418 fData->GetNVHitsUsed() < falgcfg.GetInt("NHitsInViewMin") ) {
00419 return 0;
00420 } else {
00421 return 1;
00422 }
00423 }
|
|
||||||||||||
|
|
|
|
Definition at line 151 of file AlgFitTrackSA.cxx. References fBField, fClusterList, fData, fFitNtp, and fLastGoodFit. Referenced by RunAlg(), and ~AlgFitTrackSA(). 00152 {
00153 fClusterList.clear();
00154
00155 if ( fData ) delete fData; fData = 0;
00156 if ( fBField ) delete fBField; fBField = 0;
00157 if ( fLastGoodFit ) delete fLastGoodFit; fLastGoodFit = 0;
00158 if ( fFitNtp ) delete fFitNtp; fFitNtp = 0;
00159 }
|
|
|
Definition at line 854 of file AlgFitTrackSA.cxx. References abs(), CandHandle::AddDaughterLink(), fBegPlane, fClusterList, fData, MSG, DataFT::UseHitU(), and DataFT::UseHitV(). Referenced by RunAlg(). 00854 {
00855 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::CloneDaughterList\n";
00856 //
00857 for ( list<TrackClusterSR>::iterator tcit = fClusterList.begin(); tcit != fClusterList.end(); ++tcit) {
00858 int iplane = tcit->GetPlane();
00859
00860 if ( fData->UseHitU(abs(iplane-fBegPlane)) || fData->UseHitV(abs(iplane-fBegPlane)) ) {
00861 const TObjArray* striplist = tcit->GetStripList();
00862
00863 for ( int i = 0; i<striplist->GetEntries(); i++) {
00864 CandStripHandle* cstriph = dynamic_cast<CandStripHandle*>(striplist->At(i));
00865 cftsah.AddDaughterLink(*cstriph);
00866 }
00867 }
00868 }
00869
00870 return;
00871 }
|
|
|
Definition at line 661 of file AlgFitTrackSA.cxx. References fIterationStateList, and MSG. Referenced by DoIterations(). 00661 {
00662 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::ContinueIterations\n";
00663
00664 MSG("FitTrackSA",Msg::kDebug) << "Decide if need to continue iterations\n";
00665
00666 vector<IterationState>::const_reverse_iterator last = fIterationStateList.rbegin();
00667 // each of the conditions stops iterations
00668 if ( last->status == kPass ) return kTRUE; // continue only if status kPass
00669
00670 return kFALSE;
00671 }
|
|
|
Definition at line 542 of file AlgFitTrackSA.cxx. References fSuperIterationStateList, MSG, SuperIterationState::nplanesconv, and SuperIterationState::nplanesdiv. Referenced by DoSuperIterations(). 00542 {
00543 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::ContinueSuperIterations\n";
00544
00545 MSG("FitTrackSA",Msg::kDebug) << "Decide if need to continue super iterations\n";
00546
00547 vector<SuperIterationState>::const_reverse_iterator lastsi = fSuperIterationStateList.rbegin();
00548
00549 MSG("FitTrackSA",Msg::kDebug) << "Number of diverging planes " << lastsi->nplanesdiv << "\n";
00550 MSG("FitTrackSA",Msg::kDebug) << "Number of converging planes " << lastsi->nplanesconv << "\n";
00551
00552 if ( lastsi->status == kConvergedFinal ) return kFALSE;
00553 if ( lastsi->status == kNoConvergenceFinal ) return kFALSE;
00554 if ( lastsi->status == kMaxIterationsReached ) return kFALSE;
00555
00556 return kTRUE;
00557 }
|
|
|
Definition at line 382 of file AlgFitTrackSA.cxx. References CanFit(), DoSuperIterations(), fSuperIterationStateList, MSG, FitState::niterations, FitState::nplanes, SuperIterationState::nplanesconv, FitState::status, and SuperIterationState::status. Referenced by RunAlg(). 00382 {
00383 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::DoFit\n";
00384
00385 MSG("FitTrackSA",Msg::kDebug) << "Starting fit.\n";
00386
00387 // InitFitState();
00388
00389 FitState fstate;
00390
00391 if ( CanFit() ) {
00392 SuperIterationState sistate = DoSuperIterations();
00393
00394 fstate.nplanes = sistate.nplanesconv;
00395 if ( sistate.status == kConvergedFinal ) {
00396 fstate.status = kFitSuccess;
00397 } else {
00398 fstate.status = kFitFailed;
00399 }
00400
00401 int niter = 0;
00402 for (vector<SuperIterationState>::const_iterator it = fSuperIterationStateList.begin();
00403 it != fSuperIterationStateList.end(); ++it) {
00404 niter += it->niterations;
00405 }
00406 fstate.niterations = niter;
00407 } else {
00408 fstate.status = kFitFailed;
00409 }
00410
00411 return fstate;
00412 }
|
|
|
Definition at line 560 of file AlgFitTrackSA.cxx. References ContinueIterations(), IterationState::dchi2, DoNextIteration(), fData, fIterationStateList, fTrackIn0, DataFT::GetTrack(), IterationState::iteration, MSG, IterationState::ndiv, IterationState::nplanesrequest, DataFT::SetInitial(), and IterationState::status. Referenced by DoNextSuperIteration(). 00560 {
00561 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::DoIterations\n";
00562
00563 MSG("FitTrackSA",Msg::kDebug) << "Iterations\n";
00564
00565 fIterationStateList.clear();
00566 IterationState state;
00567 state.iteration = 0;
00568 state.status = 0;
00569 state.dchi2 = 1e9;
00570 state.ndiv = 0;
00571 state.nplanesrequest = nplanes;
00572
00573 fData->SetInitial(fTrackIn0);
00574
00575 MSG("FitTrackSA",Msg::kDebug) << "Iteration " << state.iteration << "\n";
00576 MSG("FitTrackSA",Msg::kDebug) << "Status " << state.status << "\n";
00577 MSG("FitTrackSA",Msg::kDebug) << "dchi2 " << state.dchi2 << "\n";
00578 MSG("FitTrackSA",Msg::kDebug) << "N diverging " << state.ndiv << "\n";
00579 MSG("FitTrackSA",Msg::kDebug) << "Planes requested " << state.nplanesrequest << "\n";
00580 TVectorD track = fData->GetTrack();
00581 MSG("FitTrackSA",Msg::kDebug) << "Track: " << track(0) << " " << track(1) << " "
00582 << track(2) << " " << track(3) << " " << track(4) << "\n";
00583
00584 fIterationStateList.push_back(state);
00585
00586 do {
00587 DoNextIteration();
00588 } while ( ContinueIterations() );
00589
00590 return *fIterationStateList.rbegin();
00591 }
|
|
|
Definition at line 594 of file AlgFitTrackSA.cxx. References IterationState::dchi2, falgcfg, fData, fIterationStateList, fMatCalc, MatrixCalculator::GetdChi2(), Registry::GetDouble(), Registry::GetInt(), DataFT::GetNPlanesMin(), MatrixCalculator::GetTrackOut(), IterationState::iteration, MSG, IterationState::ndiv, IterationState::nplanesfit, IterationState::nplanesrequest, MatrixCalculator::SetForceMatrixBuild(), DataFT::SetInitial(), MatrixCalculator::Solve(), IterationState::status, and Swim(). Referenced by DoIterations(). 00594 {
00595 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::DoNextIteration\n";
00596
00597 MSG("FitTrackSA",Msg::kDebug) << "Next iteration\n";
00598
00599 vector<IterationState>::const_reverse_iterator last = fIterationStateList.rbegin();
00600
00601 IterationState state;
00602 state.iteration = last->iteration + 1;
00603 state.ndiv = last->ndiv;
00604 state.nplanesrequest = last->nplanesrequest;
00605
00606 if ( state.iteration != 1 ) {
00607 fData->SetInitial(fMatCalc.GetTrackOut());
00608 }
00609
00610 state.nplanesfit = Swim(state.nplanesrequest);
00611
00612 if ( state.nplanesfit < fData->GetNPlanesMin(falgcfg.GetInt("NHitsInViewMin")) ) {
00613 state.status = kTooShortSwim;
00614 MSG("FitTrackSA",Msg::kDebug) << "Not enough planes!!\n";
00615 MSG("FitTrackSA",Msg::kDebug) << "Iteration " << state.iteration << "\n";
00616 MSG("FitTrackSA",Msg::kDebug) << "Status " << state.status << "\n";
00617 } else {
00618 //
00619 fMatCalc.Solve(fData);
00620 state.dchi2 = fMatCalc.GetdChi2();
00621 if ( last->dchi2 < state.dchi2 ) {
00622 state.ndiv = state.ndiv + 1;
00623 }
00624
00625 state.status = kPass;
00626
00627 if ( state.dchi2 < falgcfg.GetDouble("MatrixBuildCond") ) {
00628 fMatCalc.SetForceMatrixBuild(0);
00629 } else {
00630 fMatCalc.SetForceMatrixBuild(1);
00631 }
00632
00633 if ( state.dchi2 < falgcfg.GetDouble("ConvergenceCond") && state.nplanesfit == state.nplanesrequest ) {
00634 state.status = kConverged;
00635 }
00636
00637 if ( state.dchi2 < falgcfg.GetDouble("ConvergenceCond") && state.nplanesfit != state.nplanesrequest ) {
00638 state.status = kConvergedPartial;
00639 }
00640
00641 if ( state.ndiv > falgcfg.GetInt("NMaxDiverging") ) {
00642 state.status = kNoConvergence;
00643 }
00644 if ( state.iteration > falgcfg.GetInt("NMaxIterations") ) {
00645 state.status = kMaxIterationsReached;
00646 }
00647
00648 MSG("FitTrackSA",Msg::kDebug) << "Results of Iteration " << state.iteration << "\n";
00649 MSG("FitTrackSA",Msg::kDebug) << "Status " << state.status << "\n";
00650 MSG("FitTrackSA",Msg::kDebug) << "dchi2 " << state.dchi2 << "\n";
00651 MSG("FitTrackSA",Msg::kDebug) << "N diverging " << state.ndiv << "\n";
00652 TVectorD track = fMatCalc.GetTrackOut();
00653 MSG("FitTrackSA",Msg::kDebug) << "Track: " << track(0) << " " << track(1) << " "
00654 << track(2) << " " << track(3) << " " << track(4) << "\n";
00655 }
00656
00657 fIterationStateList.push_back(state);
00658 }
|
|
|
Definition at line 474 of file AlgFitTrackSA.cxx. References DoIterations(), falgcfg, fData, fLastGoodFit, fMatCalc, fSuperIterationStateList, fTrackIn0, Registry::GetInt(), DataFT::GetNHitsUsed(), FitResult::GetNplanes(), DataFT::GetNPlanesUsed(), FitResult::GetTrackOut(), MatrixCalculator::GetTrackOut(), IterationState::iteration, SuperIterationState::iteration, MSG, SuperIterationState::niterations, SuperIterationState::nplanesconv, SuperIterationState::nplanesdiv, IterationState::nplanesfit, NPlanesNext(), SuperIterationState::nplanesnext, IterationState::nplanesrequest, MatrixCalculator::SetForceMatrixBuild(), DataFT::SetInitial(), SuperIterationState::status, IterationState::status, and Swim(). Referenced by DoSuperIterations(). 00474 {
00475 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::DoNextSuperIteration\n";
00476
00477 MSG("FitTrackSA",Msg::kDebug) << "Next super iteration\n";
00478
00479 fMatCalc.SetForceMatrixBuild(1);
00480
00481 vector<SuperIterationState>::const_reverse_iterator lastsi = fSuperIterationStateList.rbegin();
00482
00483 IterationState state = DoIterations(lastsi->nplanesnext);
00484
00485 SuperIterationState sistate;
00486 sistate.iteration = lastsi->iteration + 1;
00487 sistate.niterations = state.iteration;
00488
00489 if ( state.status == kConverged ) {
00490 // converged ok - update lastgoodfit, trackin
00491 sistate.status = kConverged;
00492 sistate.nplanesdiv = lastsi->nplanesdiv;
00493 sistate.nplanesconv = state.nplanesfit;
00494 sistate.nplanesnext = NPlanesNext(sistate.nplanesconv, sistate.nplanesdiv);
00495 fTrackIn0 = fMatCalc.GetTrackOut();
00496 MSG("FitTrackSA",Msg::kDebug) << "Updated fTrackIn0: " << fTrackIn0(0) << " "
00497 << fTrackIn0(1) << " " << fTrackIn0(2) << " " << fTrackIn0(3) << " "
00498 << fTrackIn0(4) << "\n";
00499
00500 delete fLastGoodFit;
00501 fLastGoodFit = new FitResult(fMatCalc, fData->GetNHitsUsed()-5, fData->GetNPlanesUsed());
00502 } else if ( state.status == kConvergedPartial ) {
00503 // coverged, but shorter track
00504 sistate.status = kConvergedPartial;
00505 sistate.nplanesdiv = state.nplanesrequest;
00506 sistate.nplanesconv = lastsi->nplanesconv;
00507 //sistate.nplanesconv = state.nplanesfit;
00508 sistate.nplanesnext = NPlanesNext(sistate.nplanesconv, sistate.nplanesdiv);
00509 } else {
00510 sistate.status = kNoConvergence;
00511 sistate.nplanesdiv = state.nplanesrequest;
00512 sistate.nplanesconv = lastsi->nplanesconv;
00513 sistate.nplanesnext = NPlanesNext(sistate.nplanesconv, sistate.nplanesdiv);
00514 }
00515
00516 if ( sistate.nplanesdiv-sistate.nplanesconv <= 1 ) {
00517 if ( fLastGoodFit ) {
00518 if ( sistate.status != kConverged ) {
00519 fData->SetInitial(fLastGoodFit->GetTrackOut());
00520 Swim(fLastGoodFit->GetNplanes());
00521 }
00522 sistate.status = kConvergedFinal;
00523 } else {
00524 sistate.status = kNoConvergenceFinal;
00525 }
00526 }
00527
00528 MSG("FitTrackSA",Msg::kDebug) << "Results of Super Iteration " << sistate.iteration << "\n";
00529 MSG("FitTrackSA",Msg::kDebug) << "Status " << sistate.status << "\n";
00530 MSG("FitTrackSA",Msg::kDebug) << "Number of planes next " << sistate.nplanesnext << "\n";
00531 MSG("FitTrackSA",Msg::kDebug) << "Number of diverging planes " << sistate.nplanesdiv << "\n";
00532 MSG("FitTrackSA",Msg::kDebug) << "Number of converging planes " << sistate.nplanesconv << "\n";
00533
00534 if ( sistate.iteration > falgcfg.GetInt("NMaxIterations") ) {
00535 sistate.status = kMaxIterationsReached;
00536 }
00537
00538 fSuperIterationStateList.push_back(sistate);
00539 }
|
|
|
Definition at line 442 of file AlgFitTrackSA.cxx. References ContinueSuperIterations(), DoNextSuperIteration(), falgcfg, fData, fSuperIterationStateList, Registry::GetInt(), DataFT::GetNPlanes(), DataFT::GetNPlanesMin(), SuperIterationState::iteration, MSG, SuperIterationState::niterations, SuperIterationState::nplanesconv, SuperIterationState::nplanesdiv, SuperIterationState::nplanesnext, and SuperIterationState::status. Referenced by DoFit(). 00442 {
00443 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::DoSuperIterations\n";
00444
00445 MSG("FitTrackSA",Msg::kDebug) << "Super iterations\n";
00446
00447 fSuperIterationStateList.clear();
00448 SuperIterationState sistate;
00449
00450 sistate.status = 0;
00451 sistate.iteration = 0;
00452 sistate.niterations = 0;
00453
00454 sistate.nplanesdiv = TMath::Min(fData->GetNPlanes(), falgcfg.GetInt("NMaxPlanes")) + 1;
00455 sistate.nplanesconv = fData->GetNPlanesMin(falgcfg.GetInt("NHitsInViewMin")) - 1;
00456
00457 // sistate.nplanesnext = NPlanesNext(sistate.nplanesconv, sistate.nplanesdiv);;
00458 sistate.nplanesnext = sistate.nplanesdiv - 1;
00459
00460 MSG("FitTrackSA",Msg::kDebug) << "Number of diverging planes " << sistate.nplanesdiv << "\n";
00461 MSG("FitTrackSA",Msg::kDebug) << "Number of converging planes " << sistate.nplanesconv << "\n";
00462 MSG("FitTrackSA",Msg::kDebug) << "Number of planes to try " << sistate.nplanesnext << "\n";
00463
00464 fSuperIterationStateList.push_back(sistate);
00465
00466 do {
00467 DoNextSuperIteration();
00468 } while ( ContinueSuperIterations() );
00469
00470 return *fSuperIterationStateList.rbegin();
00471 }
|
|
|
|
Definition at line 771 of file AlgFitTrackSA.cxx. References falgcfg, fClusterList, fIdir, CandRecoHandle::GetCharge(), Registry::GetDouble(), Registry::GetInt(), lessThanByPlane(), and MSG. Referenced by PrepareFit(). 00771 {
00772 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::FillClusterList\n";
00773 // Copy all the strips from CandTrack and fill cluster list
00774
00775 // (re)implement to set how you want your list to be sorted .
00776 list<CandStripHandle*> stripList = DataUtil::CDL2STLlist<CandStripHandle>(*pTrackHandle);
00777 stripList.sort(lessThanByPlane);
00778
00779 if (fIdir<0) stripList.reverse();
00780
00781 Int_t oldplane=-1;
00782 //TrackClusterSR* oldtrackcluster=0;
00783
00784 list<CandStripHandle*>::iterator pStripHandleItr;
00785 // Fill TrackSRClusters
00786 for ( pStripHandleItr = stripList.begin(); pStripHandleItr != stripList.end(); ++pStripHandleItr) {
00787
00788 MSG("FitTrackSA", Msg::kVerbose) << "Plane=" << (*pStripHandleItr)->GetPlane()
00789 << "; Charge=" << (*pStripHandleItr)->GetCharge()
00790 << "; Strip=" << (*pStripHandleItr)->GetStrip() << "\n";
00791
00792 // cftsah.AddDaughterLink(*(const_cast<CandStripHandle*>(*pStripHandleItr)));
00793 // check if strip is not demux vetoed and charge is not too small
00794 if ( (*pStripHandleItr)->GetDemuxVetoFlag() ) continue;
00795 if ( (*pStripHandleItr)->GetCharge() < falgcfg.GetDouble("MinStripCharge") ) continue;
00796
00797 // And add it to a track cluster
00798 if ( (*pStripHandleItr)->GetPlane() != oldplane ) {
00799 TrackClusterSR trackcluster(*pStripHandleItr,
00800 falgcfg.GetInt("MisalignmentError")*Munits::mm);
00801 fClusterList.push_back(trackcluster);
00802 oldplane = (*pStripHandleItr)->GetPlane();
00803 //oldtrackcluster = trackcluster;
00804 } else {
00805 fClusterList.rbegin()->AddStrip(*pStripHandleItr);
00806 }
00807 }
00808
00809 for ( list<TrackClusterSR>::iterator tcit = fClusterList.begin(); tcit != fClusterList.end(); ++tcit) {
00810 // remove cluster if strips are not continuous
00811 if ( ( tcit->GetMaxStrip() - tcit->GetMinStrip() + 1) != tcit->GetNStrip() ) {
00812 MSG("FitTrackSA", Msg::kDebug) << "Removing plane " << tcit->GetPlane()
00813 << " cluster - strips are not continuous.\n";
00814 list<TrackClusterSR>::iterator it = fClusterList.erase(tcit);
00815 tcit = --it;
00816 continue;
00817 }
00818 // remove cluster if too many strips
00819 if ( tcit->GetNStrip() > falgcfg.GetInt("MaxStripsInCluster") ) {
00820 MSG("FitTrackSA", Msg::kDebug) << "Removing plane " << tcit->GetPlane()
00821 << " cluster - too many strips.\n";
00822 list<TrackClusterSR>::iterator it = fClusterList.erase(tcit);
00823 tcit = --it;
00824 continue;
00825 }
00826 }
00827 //
00828 return;
00829 }
|
|
|
Definition at line 832 of file AlgFitTrackSA.cxx. References abs(), CandHandle::AddDaughterLink(), fBegPlane, fClusterList, fData, DataFT::GetNPlanesUsed(), MSG, DataFT::UseHitU(), and DataFT::UseHitV(). Referenced by RunAlg(). 00832 {
00833 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::FillDaughterList\n";
00834 //
00835 for ( list<TrackClusterSR>::iterator tcit = fClusterList.begin(); tcit != fClusterList.end(); ++tcit) {
00836 int iplane = tcit->GetPlane();
00837
00838 if ( abs(iplane - fBegPlane) >= fData->GetNPlanesUsed() ) break;
00839
00840 if ( fData->UseHitU(abs(iplane-fBegPlane)) || fData->UseHitV(abs(iplane-fBegPlane)) ) {
00841 const TObjArray* striplist = tcit->GetStripList();
00842
00843 for ( int i = 0; i<striplist->GetEntries(); i++) {
00844 CandStripHandle* cstriph = dynamic_cast<CandStripHandle*>(striplist->At(i));
00845 cftsah.AddDaughterLink(*cstriph);
00846 }
00847 }
00848 }
00849
00850 return;
00851 }
|
|
|
Definition at line 755 of file AlgFitTrackSA.cxx. References MSG, and CandFitTrackHandle::SetPass(). Referenced by RunAlg(). 00755 {
00756 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::FillDummyCandFitTrack\n";
00757 // Fit Failed
00758 cftsah.SetPass(kFALSE);
00759 return;
00760 }
|
|
|
Definition at line 366 of file AlgFitTrackSA.cxx. Referenced by RunAlg(). 00366 {
00367 MSG("FitTrackSA",Msg::kVerbose) << "AlgFitTrackSA::FillDummyNtp\n";
00368
00369 fFitNtp = new NtpFitSA();
00370 }
|
|
||||||||||||
|
|
Definition at line 985 of file AlgFitTrackSA.cxx. References falgcfg, fData, DataFT::FillLin(), Registry::GetInt(), and MSG. Referenced by PrepareFit(). 00986 {
00987 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::FillLinear\n";
00988 fData->FillLin(falgcfg.GetInt("NHitsLinear"),
00989 falgcfg.GetInt("NParamsLinear"));
00990 }
|
|
|
Definition at line 230 of file AlgFitTrackSA.cxx. References NtpFitSAPlane::begin, NtpFitSAFit::chi2, NtpFitSAFit::cpu, NtpFitSAVtx::dcosu, NtpFitSAVtx::dcosv, NtpFitSAVtx::dcosz, NtpFitSA::dp, NtpFitSA::dr, NtpFitSA::ds, NtpFitSA::dudz, NtpFitSA::dvdz, NtpFitSAVtx::edcosu, NtpFitSAVtx::edcosv, NtpFitSA::end, NtpFitSAPlane::end, NtpFitSA::ep, NtpFitSAVtx::eu, NtpFitSAVtx::ev, fBegPlane, fData, fEndPlane, fFitNtp, fFitState, fIdir, NtpFitSA::fit, NtpFitSA::fitplane, fLastGoodFit, DataFT::GetBegHit(), DataFT::GetBegHitUsed(), FitResult::GetChi2(), DataFT::GetDudz(), DataFT::GetDvdz(), DataFT::GetEMCharge(), DataFT::GetEndHit(), DataFT::GetEndHitUsed(), FitResult::GetFitErrM(), FitResult::GetNdof(), DataFT::GetNPlanesUsed(), DataFT::GetNUHits(), DataFT::GetNUHitsUsed(), DataFT::GetNVHits(), DataFT::GetNVHitsUsed(), DataFT::GetP(), DataFT::GetPlane(), DataFT::GetR(), DataFT::GetS(), FitResult::GetTrackOut(), DataFT::GetU(), DataFT::GetUf(), DataFT::GetV(), DataFT::GetVf(), DataFT::GetZ(), NtpFitSA::hitplane, NtpFitSA::index, NtpFitSA::iplane, MSG, NtpFitSAPlane::n, NtpFitSAFit::ndf, NtpFitSAFit::niter, FitState::niterations, NtpFitSA::nplanes, NtpFitSAPlane::nu, NtpFitSAPlane::nv, NtpFitSA::p, NtpFitSAFit::par, NtpFitSAFit::parerr, NtpFitSAVtx::plane, NtpFitSA::plane, NtpFitSA::q, NtpFitSA::r, NtpFitSA::rchi2, NtpFitSA::s, FitState::status, NtpFitSAFit::status, NtpFitSAVtx::u, NtpFitSA::u, NtpFitSAVtx::v, NtpFitSA::v, NtpFitSA::vtx, NtpFitSAVtx::z, NtpFitSA::z, and NtpFitSA::zdir. Referenced by RunAlg(). 00230 {
00231 MSG("FitTrackSA",Msg::kVerbose) << "AlgFitTrackSA::FillNtp\n";
00232
00233 // delete previous record, create new
00234 if ( fFitNtp ) delete fFitNtp;
00235 fFitNtp = new NtpFitSA(fData->GetNPlanesUsed());
00236
00237 // Fill
00238 fFitNtp->index = 0;
00239
00240 Int_t nplanes = fData->GetNPlanesUsed();
00241 fFitNtp->zdir = fIdir;
00242 fFitNtp->nplanes = nplanes;
00243
00244 MSG("FitTrackSA",Msg::kVerbose) << "Filling Arrays..\n";
00245 if ( nplanes>0 ) {
00246 fFitNtp->s = fData->GetS(nplanes-1);
00247 fFitNtp->r = fData->GetR(nplanes-1);
00248
00249 for (Int_t i = 0; i<nplanes; i++) {
00250 fFitNtp->iplane[i] = fData->GetPlane(i);
00251 fFitNtp->u[i] = fData->GetUf(i);
00252 fFitNtp->v[i] = fData->GetVf(i);
00253 fFitNtp->z[i] = fData->GetZ(i);
00254 fFitNtp->dudz[i] = fData->GetDudz(i);
00255 fFitNtp->dvdz[i] = fData->GetDvdz(i);
00256 fFitNtp->dp[i] = fData->GetP(i);
00257 fFitNtp->ds[i] = fData->GetS(i);
00258 fFitNtp->dr[i] = fData->GetR(i);
00259 }
00260 }
00261
00262 MSG("FitTrackSA",Msg::kVerbose) << "Filling Plane..\n";
00263 fFitNtp->plane.begin = fBegPlane;
00264 fFitNtp->plane.end = fEndPlane;
00265 fFitNtp->plane.n = TMath::Abs(fBegPlane-fEndPlane+1);
00266 fFitNtp->plane.nu = 0;
00267 fFitNtp->plane.nv = 0;
00268
00269 MSG("FitTrackSA",Msg::kVerbose) << "Filling Hitplane..\n";
00270 fFitNtp->hitplane.begin = fData->GetBegHit();
00271 fFitNtp->hitplane.end = fData->GetEndHit();
00272 fFitNtp->hitplane.n = fData->GetNUHits() + fData->GetNVHits();
00273 fFitNtp->hitplane.nu = fData->GetNUHits();
00274 fFitNtp->hitplane.nv = fData->GetNVHits();
00275
00276 MSG("FitTrackSA",Msg::kVerbose) << "Filling Fitplane..\n";
00277 fFitNtp->fitplane.begin = fData->GetBegHitUsed();
00278 fFitNtp->fitplane.end = fData->GetEndHitUsed();
00279 fFitNtp->fitplane.n = fData->GetNUHitsUsed() + fData->GetNVHitsUsed();
00280 fFitNtp->fitplane.nu = fData->GetNUHitsUsed();
00281 fFitNtp->fitplane.nv = fData->GetNVHitsUsed();
00282
00283 Float_t dcosu, dcosv, dcosz;
00284
00285 MSG("FitTrackSA",Msg::kVerbose) << "Filling Vtx..\n";
00286 fFitNtp->vtx.plane = fData->GetPlane(0);
00287 //ugh.uv2xy(fData->GetU(0), fData->GetV(0), x, y);
00288 //dcosz = fIdir*pow(1.+pow(fData->GetDudz(0),2)+pow(fData->GetDvdz(0),2),-0.5);
00289
00290 dcosz = fIdir*pow(1.+pow(fLastGoodFit->GetTrackOut(1),2)+pow(fLastGoodFit->GetTrackOut(3),2),-0.5);
00291 dcosu = fLastGoodFit->GetTrackOut(1)*dcosz; //fData->GetDudz(0)*dcosz;
00292 dcosv = fLastGoodFit->GetTrackOut(3)*dcosz; //fData->GetDvdz(0)*dcosz;
00293 //ugh.uv2xy(dcosu, dcosv, dcosx, dcosy);
00294 fFitNtp->vtx.u = fLastGoodFit->GetTrackOut(0); //fData->GetU(0);
00295 fFitNtp->vtx.eu = pow(TMath::Max(TinyNumber, fLastGoodFit->GetFitErrM(0,0)), 0.5);
00296 fFitNtp->vtx.v = fLastGoodFit->GetTrackOut(2); //fData->GetV(0);
00297 fFitNtp->vtx.ev = pow(TMath::Max(TinyNumber, fLastGoodFit->GetFitErrM(2,2)), 0.5);
00298 fFitNtp->vtx.z = fData->GetZ(0);
00299
00300 float edudz = pow(TMath::Max(TinyNumber, fLastGoodFit->GetFitErrM(1,1)), 0.5);
00301 float edvdz = pow(TMath::Max(TinyNumber, fLastGoodFit->GetFitErrM(3,3)), 0.5);
00302
00303 fFitNtp->vtx.dcosu = dcosu;
00304 fFitNtp->vtx.edcosu = sqrt(fabs(dcosz))*sqrt(pow(dcosu*dcosv*edvdz,2) + pow((pow(dcosz,2)+pow(dcosv,2))*edudz,2));
00305 fFitNtp->vtx.dcosv = dcosv;
00306 fFitNtp->vtx.edcosv = sqrt(fabs(dcosz))*sqrt(pow(dcosu*dcosv*edudz,2) + pow((pow(dcosz,2)+pow(dcosu,2))*edvdz,2));
00307 fFitNtp->vtx.dcosz = dcosz;
00308
00309 Int_t nplanesused = fData->GetNPlanesUsed();
00310 MSG("FitTrackSA",Msg::kVerbose) << "Filling End..\n";
00311 if ( nplanesused>0 ) {
00312 fFitNtp->end.plane = fData->GetPlane(nplanesused-1);
00313 //ugh.uv2xy(fData->GetU(nplanesused-1), fData->GetV(nplanesused-1), x, y);
00314 dcosz=fIdir*pow(1.+pow(fData->GetDudz(nplanesused-1),2)+
00315 pow(fData->GetDvdz(nplanesused-1),2),-0.5);
00316 dcosu = fData->GetDudz(nplanesused-1)*dcosz;
00317 dcosv = fData->GetDvdz(nplanesused-1)*dcosz;
00318 //ugh.uv2xy(dcosu, dcosv, dcosx, dcosy);
00319 fFitNtp->end.u = fData->GetU(nplanesused-1);
00320 fFitNtp->end.v = fData->GetV(nplanesused-1);
00321 fFitNtp->end.z = fData->GetZ(nplanesused-1);
00322 fFitNtp->end.dcosu = dcosu;
00323 fFitNtp->end.dcosv = dcosv;
00324 fFitNtp->end.dcosz = dcosz;
00325 }
00326
00327 MSG("FitTrackSA",Msg::kVerbose) << "Filling Fit..\n";
00328 fFitNtp->fit.niter = fFitState.niterations;
00329 fFitNtp->fit.status = fFitState.status;
00330
00331 fFitNtp->fit.ndf = fLastGoodFit->GetNdof();
00332 fFitNtp->fit.chi2 = fLastGoodFit->GetChi2();
00333 fFitNtp->fit.cpu = fCpu;
00334
00335 MSG("FitTrackSA",Msg::kVerbose) << "Filling FitParams..\n";
00336 for ( int i = 0; i < NTrackParams; i++ ) {
00337 fFitNtp->fit.par[i] = fLastGoodFit->GetTrackOut(i);
00338 for ( int j = 0; j < NTrackParams; j++ ) {
00339 fFitNtp->fit.parerr[i][j] = fLastGoodFit->GetFitErrM(i,j);
00340 }
00341 }
00342
00343 MSG("FitTrackSA",Msg::kVerbose) << "Filling P ..\n";
00344 fFitNtp->q = (Int_t) fData->GetEMCharge();
00345 if ( TMath::Abs(fFitNtp->fit.par[4]) > TinyNumber ) {
00346 fFitNtp->p = TMath::Abs(1./fFitNtp->fit.par[4]);
00347 } else {
00348 fFitNtp->p = 0.;
00349 }
00350
00351 MSG("FitTrackSA",Msg::kVerbose) << "Filling sigma(P)..\n";
00352 if ( fFitNtp->fit.parerr[4][4] > 0 ) {
00353 fFitNtp->ep = pow(fFitNtp->p,2)*pow(fFitNtp->fit.parerr[4][4],(Float_t)0.5);
00354 } else {
00355 fFitNtp->ep = -1.;
00356 }
00357 MSG("FitTrackSA",Msg::kVerbose) << "Filling chi2/ndf..\n";
00358 if ( TMath::Abs(fFitNtp->fit.ndf) > TinyNumber ) {
00359 fFitNtp->rchi2 = fFitNtp->fit.chi2/fFitNtp->fit.ndf;
00360 } else {
00361 fFitNtp->rchi2 = 0.;
00362 }
00363 }
|
|
|
Definition at line 973 of file AlgFitTrackSA.cxx. References falgcfg, fData, DataFT::Filter(), Registry::GetDouble(), Registry::GetInt(), and MSG. Referenced by PrepareFit(). 00974 {
00975 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::FilterHits\n";
00976
00977 //
00978 if ( falgcfg.GetInt("FilterHits") )
00979 fData->Filter(falgcfg.GetInt("NHitsFilter"),
00980 falgcfg.GetInt("NParamsFilter"),
00981 falgcfg.GetDouble("FilterChi2Cut"));
00982 }
|
|
||||||||||||
|
Definition at line 874 of file AlgFitTrackSA.cxx. References falgcfg, fData, fMatCalc, fPrange, MatrixCalculator::GetChi2(), Registry::GetDouble(), Registry::GetInt(), DataFT::GetNHitsUsed(), DataFT::GetNUHitsUsed(), DataFT::GetNVHitsUsed(), MatrixCalculator::GetTrackOut(), DataFT::LinearFitEstimate(), MSG, MSGSTREAM, DataFT::SetInitial(), MatrixCalculator::Solve(), and Swim(). Referenced by InitialEstimate(). 00874 {
00875 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::Guesstimate\n";
00876
00877 MSG("FitTrackSA",Msg::kDebug) << "Estimating track parameters, using " << nplanes << " planes.\n";
00878 // Initial estimate od the track parameters:
00879 // 1. u, du/dz, v, dv/dz - from a linear fit - use up to NPlanesLinearFit planes
00880 // 2. set momentum to +P_range (mu+) - iterate once using up to NPlanesGuesstimate planes
00881 // 3. charge - set as sign of 1/p from 2.
00882
00883 TVectorD trackIn(NTrackParams);
00884 //fData->LinearFitEstimate(falgcfg.GetInt("NInitP"), trackIn);
00885 fData->LinearFitEstimate(nplanes, trackIn);
00886
00887 // Try fitting low momentum (~range) both charges and high momentum +mu
00888 const Int_t nTest = 3;
00889 Double_t invpTest[nTest];
00890 TString* nameTest[nTest];
00891 TVectorD* trackOutTest[nTest];
00892 Double_t chi2Test[nTest];
00893 Int_t nhitsTest[nTest];
00894
00895 invpTest[0] = 1./fPrange;
00896 nameTest[0] = new TString("Low, +1");
00897
00898 invpTest[1] = -1./fPrange;
00899 nameTest[1] = new TString("Low, -1");
00900
00901 invpTest[2] = falgcfg.GetDouble("InvMomentum0");
00902 nameTest[2] = new TString("High, +1");
00903
00904 // invpTest[3] = -falgcfg.GetDouble("InvMomentum0");
00905 // nameTest[3] = new TString("High, -1");
00906
00907 Int_t iMin = 0;
00908 Double_t chi2Min = 1e9;
00909 // Do test fits
00910 for ( Int_t i=0; i<nTest; i++) {
00911 trackIn(4) = invpTest[i];
00912 fData->SetInitial(trackIn);
00913 Swim(nplanes);
00914 //fData->SetNPlanesUsed(fData->Swim(falgcfg));
00915
00916 if (fData->GetNUHitsUsed() < falgcfg.GetInt("NHitsInViewMin") ||
00917 fData->GetNVHitsUsed() < falgcfg.GetInt("NHitsInViewMin") ) {
00918 MSG("FitTrackSA",Msg::kDebug) << "Can't fit " << nameTest[i]->Data() << "!!\n";
00919 chi2Test[i] = 9999.;
00920 nhitsTest[i] = 0;
00921 trackOutTest[i] = new TVectorD(NTrackParams);
00922 } else {
00923 fMatCalc.Solve(fData);
00924 chi2Test[i] = fMatCalc.GetChi2();
00925 nhitsTest[i] = fData->GetNHitsUsed();
00926 trackOutTest[i] = new TVectorD(fMatCalc.GetTrackOut());
00927 if ( chi2Test[i] < chi2Min) {
00928 chi2Min = chi2Test[i];
00929 iMin = i;
00930 }
00931 }
00932 }
00933
00934 MsgStream *mftsa = &MSGSTREAM("FitTrackSA", Msg::kDebug);
00935 (*mftsa) << "Guesstimate results:\n";
00936
00937 MsgFormat ffmtl("%9.4f");
00938 MsgFormat ifmt("%3d");
00939
00940 for (Int_t i=0; i<nTest; i++) {
00941 (*mftsa) << nameTest[i]->Data() << ": chi2=" << ffmtl(chi2Test[i]) << ", nhits=" << ifmt(nhitsTest[i])
00942 << ", q/p=" << ffmtl((*trackOutTest[i])(4)) << "\n";
00943 }
00944 (*mftsa) << "Done\n";
00945
00946 // Set momentum to the one with the lowest chi2
00947 if ( chi2Min > 9998. ) {
00948 // Couldn't do any fit
00949 MSG("FitTrackSA",Msg::kDebug) << "Guesstimate: couldn't do any fit!\n";
00950 trackIn(4) = 1./fPrange;
00951 trackOut = trackIn;
00952 } else {
00953 trackOut = *trackOutTest[iMin];
00954 }
00955
00956 // if momentum guess is obviously too low - set to Prange
00957 if ( TMath::Abs(1./trackOut(4)) < (fPrange + .1) ) {
00958 MSG("FitTrackSA",Msg::kDebug) << "Guesstimate: setting P = Prange.\n";
00959 trackOut(4) = TMath::Sign(1.,trackOut(4))/(fPrange + .1);
00960 MSG("FitTrackSA",Msg::kDebug) << "trackOut(4) = " << trackOut(4) << "\n";
00961 }
00962
00963 // Clean up
00964 for (Int_t i=0; i<nTest; i++) {
00965 delete nameTest[i];
00966 delete trackOutTest[i];
00967 }
00968
00969 return;
00970 }
|
|
|
Definition at line 373 of file AlgFitTrackSA.cxx. References falgcfg, fData, fTrackIn0, Registry::GetInt(), DataFT::GetNPlanes(), Guesstimate(), and DataFT::SetInitial(). Referenced by PrepareFit(). 00374 {
00375 int nplanesguess = TMath::Min(falgcfg.GetInt("NPlanesGuesstimate"), fData->GetNPlanes());
00376 Guesstimate(fTrackIn0, nplanesguess);
00377
00378 fData->SetInitial(fTrackIn0);
00379 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
Definition at line 1012 of file AlgFitTrackSA.cxx. References falgcfg, Registry::GetInt(), and MSG. Referenced by DoNextSuperIteration(). 01013 {
01014 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::NPlanesNext\n";
01015
01016 if ( falgcfg.GetInt("ConvergenceSearch") == 0 ) {
01017 // "linear" search
01018 return nplanesdiv-1;
01019 } else if ( falgcfg.GetInt("ConvergenceSearch") == 1 ) {
01020 // "binary" search
01021 return (nplanesconv + nplanesdiv)/2;
01022 } else if ( falgcfg.GetInt("ConvergenceSearch") == 2 ) {
01023 // "optimized"
01024 int istep = falgcfg.GetInt("SearchStep");
01025 if ( (nplanesdiv - nplanesconv) > 2*istep ) {
01026 return nplanesdiv-istep;
01027 } else {
01028 return (nplanesconv + nplanesdiv)/2;
01029 }
01030 } else if ( falgcfg.GetInt("ConvergenceSearch") == 3 ) {
01031 // "optimized" binary search with length cutoff for linear search
01032 int istep = falgcfg.GetInt("SearchStep");
01033 int ilong = falgcfg.GetInt("BinaryLength");
01034 if ( nplanesdiv >= ilong ) {
01035 return (nplanesconv + nplanesdiv)/2;
01036 } else if ( (nplanesdiv - nplanesconv) < ilong && (nplanesdiv - nplanesconv) > 2*istep ) {
01037 return nplanesdiv-istep;
01038 } else {
01039 return (nplanesconv + nplanesdiv)/2;
01040 }
01041 }
01042 return nplanesdiv-1;
01043 }
|
|
||||||||||||
|
Definition at line 162 of file AlgFitTrackSA.cxx. References falgcfg, fBegPlane, fBField, fClusterList, fData, fEndPlane, fIdir, DataFT::Fill(), FillClusterList(), FillFromCandTrack(), FillLinear(), FilterHits(), fPrange, CandRecoHandle::GetBegPlane(), CandRecoHandle::GetEndPlane(), Registry::GetInt(), CandTrackHandle::GetMomentum(), CandHandle::GetVldContext(), InitialEstimate(), and MSG. Referenced by RunAlg(). 00163 {
00164 // First and last planes in the track
00165 fBegPlane = candtrackhandle->GetBegPlane();
00166 fEndPlane = candtrackhandle->GetEndPlane();
00167
00168 fPrange = candtrackhandle->GetMomentum();
00169 MSG("FitTrackSA",Msg::kDebug) << "P(range) = " << fPrange << "\n";
00170 if ( fPrange > MaxPrange ) {
00171 // something's wrong with Prange
00172 fPrange = MaxPrange;
00173 }
00174
00175 if (fEndPlane>fBegPlane) {
00176 fIdir = 1;
00177 } else {
00178 fIdir = -1;
00179 }
00180
00181 //
00182 FillFromCandTrack(cftsah, candtrackhandle);
00183 FillClusterList(candtrackhandle);
00184
00185 // Make DataFT object
00186 const VldContext *vldcptr = candtrackhandle->GetVldContext();
00187 assert(vldcptr);
00188 VldContext vldc = *vldcptr;
00189
00190 // BField
00191 if ( falgcfg.GetInt("BFieldOff") ) {
00192 fBField = new BFieldFT(TinyNumber);
00193 fData = new DataFT(fBegPlane, fEndPlane, vldc, fBField);
00194 } else {
00195 fData = new DataFT(fBegPlane, fEndPlane, vldc);
00196 }
00197 /* else {
00198 switch (vldc.GetDetector()) {
00199 case DetectorType::kFar:
00200 fBField = new BField(vldc,-1,120);
00201 break;
00202 case DetectorType::kNear:
00203 fBField = new BField(vldc,-1,-142);
00204 break;
00205 case DetectorType::kCalDet:
00206 fBField = new BField(vldc,0,0);
00207 break;
00208 default:
00209 MSG("FitTrackSA",Msg::kError)
00210 << "BField does not support the "
00211 << DetectorType::AsString(vldc.GetDetector())
00212 << " detector " << endl;
00213 assert(0);
00214 }
00215 }*/
00216
00217 //fData = new DataFT(fBegPlane, fEndPlane, vldc, fBField);
00218
00219 // Fill dataft object
00220 fData->Fill(fClusterList);
00221
00222 FilterHits();
00223 FillLinear();
00224
00225 InitialEstimate();
00226 }
|
|
||||||||||||||||
|
Implements AlgBase. Definition at line 87 of file AlgFitTrackSA.cxx. References CandFitTrackSAHandle::AddNtpFitSA(), CleanupFit(), CloneDaughterList(), DoFit(), falgcfg, fCpu, fFitNtp, fFitState, FillCandFitTrack(), FillDaughterList(), FillDummyCandFitTrack(), FillDummyNtp(), FillNtp(), CandContext::GetDataIn(), MSG, PrepareFit(), FitState::status, and timer(). 00087 {
00088 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::RunAlg\n";
00089
00090 assert(cx.GetDataIn());
00091
00092 falgcfg = ac;
00093
00094 if (!(cx.GetDataIn()->InheritsFrom("TObjArray"))) {
00095 return;
00096 }
00097
00098 CandFitTrackSAHandle& cftsah = (CandFitTrackSAHandle&) ch;
00099
00100 // Start timer
00101 TStopwatch timer;
00102 timer.Start();
00103
00104 // Find CandTrack object in the input list
00105 CandTrackHandle *track0 = 0;
00106 const TObjArray* cxin = dynamic_cast<const TObjArray*>(cx.GetDataIn());
00107 for (Int_t i=0; i<=cxin->GetLast(); i++) {
00108 TObject *tobj = cxin->At(i);
00109 //tobj->Dump();
00110 if ( tobj ) {
00111 if (tobj->InheritsFrom("CandTrackHandle")) {
00112 track0 = dynamic_cast<CandTrackHandle*>(tobj);
00113 }
00114 }
00115 }
00116
00117 // Bail out if no tracks
00118 if (!track0) {
00119 return;
00120 }
00121
00122 PrepareFit(cftsah, track0);
00123
00124 // Fit
00125 fFitState = DoFit();
00126
00127 // Stop Timer
00128 timer.Stop();
00129 fCpu = timer.CpuTime();
00130
00131 if ( fFitState.status == kFitSuccess ) {
00132 FillNtp();
00133 FillDaughterList(cftsah);
00134 FillCandFitTrack(cftsah);
00135 } else {
00136 FillDummyNtp();
00137 CloneDaughterList(cftsah);
00138 FillDummyCandFitTrack(cftsah);
00139 }
00140
00141 // Fill fit results
00142 cftsah.AddNtpFitSA(*fFitNtp);
00143
00144 // Clean up
00145 CleanupFit();
00146
00147 return;
00148 }
|
|
|
Definition at line 1005 of file AlgFitTrackSA.cxx. References fData, DataFT::GetNPlanes(), and MSG. Referenced by DoNextIteration(), DoNextSuperIteration(), and Guesstimate(). 01006 {
01007 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::Swim\n";
01008 return Swim(fData->GetNPlanes());
01009 }
|
|
|
Definition at line 993 of file AlgFitTrackSA.cxx. References falgcfg, fData, Registry::GetInt(), MSG, DataFT::SwimAsData(), and DataFT::SwimAsSwimmer(). 00994 {
00995 MSG("FitTrackSA", Msg::kVerbose) << "AlgFitTrackSA::Swim(int)\n";
00996
00997 if ( falgcfg.GetInt("SwimAsData") == 1 ) {
00998 return fData->SwimAsData(nplanes);
00999 } else {
01000 return fData->SwimAsSwimmer(nplanes);
01001 }
01002 }
|
|
|
Definition at line 89 of file AlgFitTrackSA.h. Referenced by CanFit(), DoNextIteration(), DoNextSuperIteration(), DoSuperIterations(), FillClusterList(), FillLinear(), FilterHits(), Guesstimate(), InitialEstimate(), NPlanesNext(), PrepareFit(), RunAlg(), and Swim(). |
|
|
Definition at line 91 of file AlgFitTrackSA.h. Referenced by CloneDaughterList(), FillDaughterList(), FillNtp(), and PrepareFit(). |
|
|
Definition at line 96 of file AlgFitTrackSA.h. Referenced by CleanupFit(), and PrepareFit(). |
|
|
Definition at line 95 of file AlgFitTrackSA.h. Referenced by CleanupFit(), CloneDaughterList(), FillClusterList(), FillDaughterList(), and PrepareFit(). |
|
|
Definition at line 102 of file AlgFitTrackSA.h. Referenced by RunAlg(). |
|
|
Definition at line 97 of file AlgFitTrackSA.h. Referenced by CanFit(), CleanupFit(), CloneDaughterList(), DoIterations(), DoNextIteration(), DoNextSuperIteration(), DoSuperIterations(), FillDaughterList(), FillLinear(), FillNtp(), FilterHits(), Guesstimate(), InitialEstimate(), PrepareFit(), and Swim(). |
|
|
Definition at line 92 of file AlgFitTrackSA.h. Referenced by FillNtp(), and PrepareFit(). |
|
|
Definition at line 108 of file AlgFitTrackSA.h. Referenced by CleanupFit(), FillCandFitTrack(), FillDummyNtp(), FillNtp(), and RunAlg(). |
|
|
Definition at line 101 of file AlgFitTrackSA.h. |
|
|
Definition at line 93 of file AlgFitTrackSA.h. Referenced by FillClusterList(), FillFromCandTrack(), FillNtp(), and PrepareFit(). |
|
|
Definition at line 105 of file AlgFitTrackSA.h. Referenced by ContinueIterations(), DoIterations(), and DoNextIteration(). |
|
|
Definition at line 107 of file AlgFitTrackSA.h. Referenced by CleanupFit(), DoNextSuperIteration(), and FillNtp(). |
|
|
Definition at line 110 of file AlgFitTrackSA.h. Referenced by DoNextIteration(), DoNextSuperIteration(), and Guesstimate(). |
|
|
Definition at line 94 of file AlgFitTrackSA.h. Referenced by Guesstimate(), and PrepareFit(). |
|
|
Definition at line 104 of file AlgFitTrackSA.h. Referenced by ContinueSuperIterations(), DoFit(), DoNextSuperIteration(), and DoSuperIterations(). |
|
|
Definition at line 99 of file AlgFitTrackSA.h. Referenced by DoIterations(), DoNextSuperIteration(), and InitialEstimate(). |
1.3.9.1