/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Mdc/MdcAlignAlg/MdcAlignAlg-00-01-04/src/MdcAliRecTrk.cxx

Go to the documentation of this file.
00001 #include "MdcAlignAlg/MdcAliRecTrk.h"
00002 
00003 #include "GaudiKernel/MsgStream.h"
00004 #include "GaudiKernel/IMessageSvc.h"
00005 #include "GaudiKernel/StatusCode.h"
00006 #include "GaudiKernel/ISvcLocator.h"
00007 #include "GaudiKernel/Bootstrap.h"
00008 #include "GaudiKernel/SmartDataPtr.h"
00009 #include "GaudiKernel/IDataProviderSvc.h"
00010 
00011 const double MdcAliRecTrk::m_df = 10.0;
00012 
00013 MdcAliRecTrk::~MdcAliRecTrk(){
00014      unsigned int i;
00015      for(i=0; i<m_rechit.size(); i++){
00016           delete m_rechit[i];
00017      }
00018      m_rechit.clear();
00019 }
00020 
00021 void MdcAliRecTrk::setRecTrk(RecMdcTrackCol::iterator it_trk){
00022      IMessageSvc *msgSvc;
00023      Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00024      MsgStream log(msgSvc, "MdcAliRecTrk");
00025      log << MSG::DEBUG << "MdcAliRecTrk::setRecTrk()" << endreq;
00026 
00027      m_stat = (*it_trk)->stat();
00028      m_dr = (*it_trk) -> helix(0);
00029      m_phi0 = (*it_trk) -> helix(1);
00030      m_kappa = (*it_trk) -> helix(2);
00031      m_dz = (*it_trk) -> helix(3);
00032      m_tanl = (*it_trk) -> helix(4);
00033 
00034      m_helix = (*it_trk)->helix();
00035      m_helixerr = (*it_trk)->err();
00036 
00037      m_chisq = (*it_trk) -> chi2();
00038      m_nhits = (*it_trk) -> getNhits();
00039 
00040      m_dr *= m_df;              // cm -> mm
00041      m_dz *= m_df;              // cm -> mm
00042 
00043      if(m_kappa < 0.01){        // no magnetic field
00044           m_pt = 0.0;
00045           m_p = 0.0;
00046      }else{
00047           m_pt = 1.0 / m_kappa;
00048           m_p = m_pt * sqrt(m_tanl * m_tanl + 1.0);
00049      }
00050 
00051      HitRefVec gothits = (*it_trk) -> getVecHits();
00052      HitRefVec::iterator it_hit = gothits.begin();
00053      MdcAliRecHit* rechit;
00054      for(; it_hit != gothits.end(); it_hit++){
00055           rechit = new MdcAliRecHit();
00056           rechit->setRecHit(it_hit);
00057           m_rechit.push_back(rechit);
00058      }
00059 }
00060 
00061 void MdcAliRecTrk::setKalTrk(RecMdcKalTrackCol::iterator it_trk){
00062      IMessageSvc *msgSvc;
00063      Gaudi::svcLocator()->service("MessageSvc", msgSvc);
00064      MsgStream log(msgSvc, "MdcAliRecTrk");
00065      log << MSG::DEBUG << "MdcAliRecTrk::setKalTrk()" << endreq;
00066 
00067      int m_pid = 1;
00068      if(0 == m_pid) RecMdcKalTrack::setPidType(RecMdcKalTrack::electron);
00069      else if(1 == m_pid) RecMdcKalTrack::setPidType(RecMdcKalTrack::muon);
00070      else RecMdcKalTrack::setPidType(RecMdcKalTrack::electron);
00071 
00072      m_stat = 0;
00073      m_dr = (*it_trk)->dr();
00074      m_phi0 = (*it_trk)->fi0();
00075      m_kappa = (*it_trk)->kappa();
00076      m_dz = (*it_trk)->dz();
00077      m_tanl = (*it_trk)->tanl();
00078      m_chisq = (*it_trk)->chi2();
00079 
00080      m_dr *= 10.0;              // cm -> mm
00081      m_dz *= 10.0;              // cm -> mm
00082 
00083      m_pt = 1.0 / fabs(m_kappa);
00084      m_p = m_pt * sqrt( m_tanl * m_tanl + 1.0 );
00085 
00086      HelixSegRefVec gothelixsegs = (*it_trk)->getVecHelixSegs();
00087      HelixSegRefVec::iterator it_hit = gothelixsegs.begin();
00088      MdcAliRecHit* rechit;
00089 
00090      int k = 0;
00091      for(; it_hit != gothelixsegs.end(); it_hit++){
00092           rechit = new MdcAliRecHit();
00093           rechit->setKalHit(it_hit);
00094           m_rechit.push_back(rechit);
00095 
00096           k++;
00097      }
00098      m_nhits = k;
00099 }

Generated on Tue Nov 29 23:12:48 2016 for BOSS_7.0.2 by  doxygen 1.4.7