Implements Propagator.
Definition at line 76 of file HICMuonPropagator.cc.
References a, b, FreeTrajectoryState::charge(), funct::cos(), gather_cfg::cout, FreeTrajectoryState::curvilinearError(), field, CurvilinearTrajectoryError::matrix(), GlobalTrajectoryParameters::momentum(), L1TEmulatorMonitor_cff::p, FreeTrajectoryState::parameters(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), GloballyPositioned< T >::position(), GlobalTrajectoryParameters::position(), funct::sin(), x, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
98 double dfcalc,phnext,rdet;
100 #ifdef MUPROPAGATOR_DEBUG
101 cout<<
"MuPropagator::Start propagation"<<endl;
107 double px = p.
x();
double py = p.
y();
double pz = p.
z();
108 double aCharge = fts.
charge();
110 double phiold=x.
phi();
111 if(x.
phi()<0.) phiold=twopi+x.
phi();
113 #ifdef MUPROPAGATOR_DEBUG
114 cout<<
"MuPropagator::xold=" << x<<
" p= "<<p<<endl;
117 double a = p.
perp()/pz;
118 double b = x.
perp()-a*x.
z();
120 #ifdef MUPROPAGATOR_DEBUG
121 cout<<
"MuPropagator::Propagate to disk="<<surface.position().z()<<
" pz="<<pz<<
122 " line parameters="<<a<<
" "<<b<<endl;
127 dfcalc = aCharge*0.006*fabs(x.
z()-surface.position().z())/fabs(pz);
128 phnext = phiold+dfcalc;
130 if(phnext>twopi) phnext = phnext-twopi;
131 if(phnext<0.) phnext = phnext+twopi;
135 rdet = a*surface.position().z()-
b;
141 #ifdef MUPROPAGATOR_DEBUG
142 cout<<
"MuPropagator::phiold,phnext,zdet,charge,dfcalc="
143 <<phiold<<
" "<<phnext<<
" "<<
144 surface.position().z()<<
" "<<aCharge<<
" "<<dfcalc<<endl;
145 cout<<
"New coordinates="<<xnew<<endl;
146 cout<<
"New momentum="<<pnew<<endl;
const MagneticField * field
const GlobalTrajectoryParameters & parameters() const
Sin< T >::type sin(const T &t)
Geom::Phi< T > phi() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
TrackCharge charge() const
const CurvilinearTrajectoryError & curvilinearError() const
GlobalVector momentum() const
Cos< T >::type cos(const T &t)
GlobalPoint position() const
const AlgebraicSymMatrix55 & matrix() const