/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TrkReco/TrkReco-00-08-59-patch4-slc6tag/src/TMSelector.cxx

Go to the documentation of this file.
00001 //-----------------------------------------------------------------------------
00002 // $Id: TMSelector.cxx,v 1.1 2006/10/12 07:52:00 liuqg Exp $
00003 //-----------------------------------------------------------------------------
00004 // Filename : TMSelector.cc
00005 // Section  : Tracking
00006 // Owner    : Yoshi Iwasaki
00007 // Email    : yoshihito.iwasaki@kek.jp
00008 //-----------------------------------------------------------------------------
00009 // Description : A class to select a TTrackBase object.
00010 //               See http://bsunsrv1.kek.jp/~yiwasaki/tracking/
00011 //-----------------------------------------------------------------------------
00012 
00013 #include "TrkReco/TMSelector.h"
00014 #include "TrkReco/TTrackBase.h"
00015 #include "TrkReco/TTrack.h"
00016 #include "TrkReco/TCircle.h"
00017 #include "TrkReco/TMLink.h"
00018 
00019 TMSelector::TMSelector()
00020 : _nLinksDefined(false),
00021   _nLinks(0),
00022   _nSuperLayersDefined(false),
00023   _nSuperLayers(0),
00024   _minPtDefined(false),
00025   _minPt(0.),
00026   _maxImpactDefined(false),
00027   _maxImpact(0.),
00028   _nLinksStereoDefined(false),
00029   _nLinksStereo(0),
00030   _maxDistanceDefined(false),
00031   _maxDistance(0.) {
00032 }
00033 
00034 TMSelector::TMSelector(const TMSelector & a)
00035 : _nLinksDefined(a._nLinksDefined),
00036   _nLinks(a._nLinks),
00037   _nSuperLayersDefined(a._nSuperLayersDefined),
00038   _nSuperLayers(a._nSuperLayers),
00039   _minPtDefined(a._minPtDefined),
00040   _minPt(a._minPt),
00041   _maxImpactDefined(a._maxImpactDefined),
00042   _maxImpact(a._maxImpact),
00043   _nLinksStereoDefined(a._nLinksStereoDefined),
00044   _nLinksStereo(a._nLinksStereo),
00045   _maxDistanceDefined(a._maxDistanceDefined),
00046   _maxDistance(a._maxDistance) {
00047 }
00048 
00049 TMSelector::~TMSelector() {
00050 }
00051 
00052 bool
00053 TMSelector::select(TTrackBase & b) const {
00054 
00055 #ifdef TRKRECO_DEBUG_DETAIL
00056     if (! b.fitted()) {
00057         std::cout << "    TSelect::select !!! not fitted yet" << std::endl;
00058     }
00059 #endif
00060 
00061     if (b.objectType() == Track) {
00062         TTrack & a = (TTrack &) b;
00063 
00064         if (_minPtDefined) {
00065             if (a.pt() < _minPt) {
00066 #ifdef TRKRECO_DEBUG_DETAIL
00067                 std::cout << "    TSelect ... rejected by min. pt(";
00068                 std::cout << a.pt() << ") < ";
00069                 std::cout << _minPt << std::endl;
00070 #endif
00071                 return false;
00072             }
00073         }
00074 
00075         if (_maxImpactDefined) {
00076             if (fabs(a.impact()) > _maxImpact) {
00077 #ifdef TRKRECO_DEBUG_DETAIL
00078                 std::cout << "    TSelect ... rejected by max. impact(";
00079                 std::cout << a.impact() << ") < ";
00080                 std::cout << _maxImpact << std::endl;
00081 #endif
00082                 return false;
00083             }
00084         }
00085     }
00086     else if (b.objectType() == Circle) {
00087         TCircle & a = (TCircle &) b;
00088 
00089         if (_minPtDefined) {
00090             if (a.pt() < _minPt) {
00091 #ifdef TRKRECO_DEBUG_DETAIL
00092                 std::cout << "    TSelect ... rejected by min. pt(";
00093                 std::cout << a.pt() << ") < ";
00094                 std::cout << _minPt << std::endl;
00095 #endif
00096                 return false;
00097             }
00098         }
00099 
00100         if (_maxImpactDefined) {
00101             if (fabs(a.impact()) > _maxImpact) {
00102 #ifdef TRKRECO_DEBUG_DETAIL
00103                 std::cout << "    TSelect ... rejected by max. impact(";
00104                 std::cout << a.impact() << ") < ";
00105                 std::cout << _maxImpact << std::endl;
00106 #endif
00107                 return false;
00108             }
00109         }
00110     }
00111     else {
00112         std::cout << "TMSelector !!! Unknown object type" << std::endl;
00113         return false;
00114     }
00115 
00116 #ifdef TRKRECO_DEBUG_DETAIL
00117     std::cout << "    TSelect::select ... accepted" << std::endl;
00118 #endif
00119     return true;
00120 }
00121 
00122 bool
00123 TMSelector::preSelect(const TTrackBase & a) const {
00124     if (_nLinksDefined) {
00125         if (a.nLinks() < _nLinks) {
00126 #ifdef TRKRECO_DEBUG_DETAIL
00127             std::cout << "    TSelect ... rejected by nLinks(";
00128             std::cout << a.nLinks() << ") < ";
00129             std::cout << _nLinks << std::endl;
00130 #endif
00131             return false;
00132         }
00133     }
00134 
00135     if (_nSuperLayersDefined) {
00136         if (NSuperLayers(a.links()) < _nSuperLayers) {
00137 #ifdef TRKRECO_DEBUG_DETAIL
00138             std::cout << "    TSelect ... rejected by nSuperLayers(";
00139             std::cout << NSuperLayers(a.links()) << ") < ";
00140             std::cout << _nSuperLayers << std::endl;
00141 #endif
00142             return false;
00143         }
00144     }
00145 
00146 #ifdef TRKRECO_DEBUG_DETAIL
00147     std::cout << "    TSelect::preSelect ... accepted" << std::endl;
00148 #endif
00149     return true;
00150 }

Generated on Tue Nov 29 23:14:15 2016 for BOSS_7.0.2 by  doxygen 1.4.7