37 if (getEndCapTkPropagator()->propagationDirection()!=dir && getEndCapTkPropagator()->propagationDirection()!=
anyDirection){
38 edm::LogError(
"BeamHaloPropagator")<<
"composite propagator set with inconsistent direction components\n"
39 <<
"EndCap propagator is: "<<getEndCapTkPropagator()->propagationDirection()
40 <<
"\n to be set on: "<<
dir;
41 getEndCapTkPropagator()->setPropagationDirection(dir);
44 if (getCrossTkPropagator()->propagationDirection()!=dir && getCrossTkPropagator()->propagationDirection()!=
anyDirection){
45 edm::LogError(
"BeamHaloPropagator")<<
"composite propagator set with inconsistent direction components\n"
46 <<
"Cross propagator is: "<<getCrossTkPropagator()->propagationDirection()
47 <<
"\n to be set on: "<<
dir;
48 getCrossTkPropagator()->setPropagationDirection(dir);
55 Propagator(dir), theEndCapTkProp(aEndCapTkProp->
clone()), theCrossTkProp(aCrossTkProp->
clone()), theField(field) {
62 Propagator(dir), theEndCapTkProp(aEndCapTkProp.
clone()), theCrossTkProp(aCrossTkProp.
clone()), theField(field) {
68 Propagator(aProp.propagationDirection()), theEndCapTkProp(0), theCrossTkProp(0) {
69 if (aProp.theEndCapTkProp)
70 theEndCapTkProp=aProp.getEndCapTkPropagator()->clone();
71 if (aProp.theCrossTkProp)
72 theCrossTkProp=aProp.getCrossTkPropagator()->clone();
76 BeamHaloPropagator::~BeamHaloPropagator() {
78 delete theEndCapTkProp;
79 delete theCrossTkProp;
85 <<
"and hence "<<((fts.
position().
z()*plane.
position().
z()<0)?
"crossing":
"not crossing");
95 const Plane& plane)
const {
97 if (crossingTk(fts,plane)){
98 return getCrossTkPropagator()->propagate(fts, plane);}
100 return getEndCapTkPropagator()->propagate(fts, plane);}
106 return getCrossTkPropagator()->propagate(fts, cylinder);
109 std::pair<TrajectoryStateOnSurface,double>
111 const Plane& plane)
const
113 if (crossingTk(fts,plane)){
114 return getCrossTkPropagator()->propagateWithPath(fts, plane);}
116 return getEndCapTkPropagator()->propagateWithPath(fts, plane);}
119 std::pair<TrajectoryStateOnSurface,double>
122 {
return getCrossTkPropagator()->propagateWithPath(fts, cylinder);}
125 const Propagator* BeamHaloPropagator::getEndCapTkPropagator()
const {
126 LogDebug(
"BeamHaloPropagator")<<
"using the EndCap propagator";
127 return theEndCapTkProp;}
130 const Propagator* BeamHaloPropagator::getCrossTkPropagator()
const {
131 LogDebug(
"BeamHaloPropagator")<<
"using the Crossing propagator";
132 return theCrossTkProp;}
virtual TrajectoryStateOnSurface propagate(const FreeTrajectoryState &, const Surface &) const
GlobalPoint position() const
const PositionType & position() const