|
OPAL (Object Oriented Parallel Accelerator Library)
2.2.0
OPAL
|
Build a map using a transport map for each elements. More...
#include <TransportMapper.h>


Public Member Functions | |
| TransportMapper (const Beamline &beamline, const PartData &, bool revBeam, bool revTrack) | |
| Constructor. More... | |
| virtual | ~TransportMapper () |
| virtual void | getMap (LinearMap< double, 6 > &) const |
| Return the linear part of the accumulated map. More... | |
| virtual void | getMap (TransportMap< double, 6 > &) const |
| Return the transport part of the accumulated map. More... | |
| virtual void | getMap (FVps< double, 6 > &) const |
| Return the full map accumulated so far. More... | |
| virtual void | setMap (const LinearMap< double, 6 > &) |
| Reset the linear part of the accumulated map for restart. More... | |
| virtual void | setMap (const TransportMap< double, 6 > &) |
| Reset the transport part of the accumulated map for restart. More... | |
| virtual void | setMap (const FVps< double, 6 > &) |
| Reset the full map for restart. More... | |
| virtual void | visitBeamBeam (const BeamBeam &) |
| Apply the algorithm to a BeamBeam. More... | |
| virtual void | visitBeamStripping (const BeamStripping &) |
| Apply the algorithm to a BeamStripping. More... | |
| virtual void | visitCCollimator (const CCollimator &) |
| Apply the algorithm to a collimator. More... | |
| virtual void | visitComponent (const Component &) |
| Apply the algorithm to an arbitrary component. More... | |
| virtual void | visitCorrector (const Corrector &) |
| Apply the algorithm to a Corrector. More... | |
| virtual void | visitDegrader (const Degrader &) |
| Apply the algorithm to a Degrader. More... | |
| virtual void | visitDiagnostic (const Diagnostic &) |
| Apply the algorithm to a Diagnostic. More... | |
| virtual void | visitDrift (const Drift &) |
| Apply the algorithm to a Drift. More... | |
| virtual void | visitFlexibleCollimator (const FlexibleCollimator &) |
| Apply the algorithm to a flexible collimator. More... | |
| virtual void | visitLambertson (const Lambertson &) |
| Apply the algorithm to a Lambertson. More... | |
| virtual void | visitMarker (const Marker &) |
| Apply the algorithm to a Marker. More... | |
| virtual void | visitMonitor (const Monitor &) |
| Apply the algorithm to a Monitor. More... | |
| virtual void | visitMultipole (const Multipole &) |
| Apply the algorithm to a Multipole. More... | |
| virtual void | visitPatch (const Patch &pat) |
| Apply the algorithm to a patch. More... | |
| virtual void | visitProbe (const Probe &) |
| Apply the algorithm to a probe. More... | |
| virtual void | visitRBend (const RBend &) |
| Apply the algorithm to a RBend. More... | |
| virtual void | visitRFCavity (const RFCavity &) |
| Apply the algorithm to a RFCavity. More... | |
| virtual void | visitRFQuadrupole (const RFQuadrupole &) |
| Apply the algorithm to a RFQuadrupole. More... | |
| virtual void | visitSBend (const SBend &) |
| Apply the algorithm to a SBend. More... | |
| virtual void | visitSeparator (const Separator &) |
| Apply the algorithm to a Separator. More... | |
| virtual void | visitSeptum (const Septum &) |
| Apply the algorithm to a Septum. More... | |
| virtual void | visitSolenoid (const Solenoid &) |
| Apply the algorithm to a Solenoid. More... | |
| virtual void | visitParallelPlate (const ParallelPlate &) |
| Apply the algorithm to a ParallelPlate. More... | |
| virtual void | visitCyclotronValley (const CyclotronValley &) |
| Apply the algorithm to a CyclotronValley. More... | |
| virtual void | visitAlignWrapper (const AlignWrapper &) |
| Apply the algorithm to an offset beamline object wrapper. More... | |
| virtual void | visitMapIntegrator (const MapIntegrator &) |
| Apply the algorithm to an integrator capable of mapping. More... | |
Public Member Functions inherited from AbstractMapper | |
| AbstractMapper (const Beamline &bl, const PartData &data, bool revBeam, bool revTrack) | |
| Constructor. More... | |
| virtual | ~AbstractMapper () |
Public Member Functions inherited from DefaultVisitor | |
| DefaultVisitor (const Beamline &beamline, bool backBeam, bool backTrack) | |
| Constructor. More... | |
| virtual | ~DefaultVisitor ()=0 |
| virtual void | execute () |
| Apply the algorithm to the top-level beamline. More... | |
| virtual void | visitCyclotron (const Cyclotron &) |
| Apply the algorithm to an cyclotron. More... | |
| virtual void | visitRing (const Ring &) |
| Apply the algorithm to an opal ring.. More... | |
| virtual void | visitMultipoleT (const MultipoleT &) |
| Apply the algorithm to a multipoleT. More... | |
| virtual void | visitMultipoleTStraight (const MultipoleTStraight &) |
| Apply the algorithm to a multipoleTStraight. More... | |
| virtual void | visitMultipoleTCurvedConstRadius (const MultipoleTCurvedConstRadius &) |
| Apply the algorithm to a multipoleTCurvedConstRadius. More... | |
| virtual void | visitMultipoleTCurvedVarRadius (const MultipoleTCurvedVarRadius &) |
| Apply the algorithm to a multipoleTCurvedVarRadius. More... | |
| virtual void | visitOffset (const Offset &) |
| Apply the algorithm to an Offset. More... | |
| virtual void | visitRBend3D (const RBend3D &) |
| Apply the algorithm to a rectangular bend. More... | |
| virtual void | visitVariableRFCavity (const VariableRFCavity &vcav) |
| Apply the algorithm to a RF cavity. More... | |
| virtual void | visitVariableRFCavityFringeField (const VariableRFCavityFringeField &vcav) |
| Apply the algorithm to a RF cavity. More... | |
| virtual void | visitTravelingWave (const TravelingWave &) |
| Apply the algorithm to a RF cavity. More... | |
| virtual void | visitSBend3D (const SBend3D &) |
| Apply the algorithm to a sector bend. More... | |
| virtual void | visitScalingFFAMagnet (const ScalingFFAMagnet &) |
| Apply the algorithm to a scaling FFA magnet. More... | |
| virtual void | visitVerticalFFAMagnet (const VerticalFFAMagnet &) |
| Apply the algorithm to a RF cavity. More... | |
| virtual void | visitSource (const Source &) |
| Apply the algorithm to a source. More... | |
| virtual void | visitStripper (const Stripper &) |
| Apply the algorithm to a charge stripper. More... | |
| virtual void | visitBeamline (const Beamline &) |
| Apply the algorithm to a beam line. More... | |
| virtual void | visitFlaggedElmPtr (const FlaggedElmPtr &) |
| Apply the algorithm to a FlaggedElmPtr. More... | |
| virtual void | visitCorrectorWrapper (const CorrectorWrapper &) |
| Apply the algorithm to an corrector wrapper.. More... | |
| virtual void | visitCyclotronWrapper (const CyclotronWrapper &) |
| Apply the algorithm to an cyclotron wrapper.. More... | |
| virtual void | visitMultipoleWrapper (const MultipoleWrapper &) |
| Apply the algorithm to an multipole wrapper.. More... | |
| virtual void | visitRBendWrapper (const RBendWrapper &) |
| Apply the algorithm to an RBend wrapper.. More... | |
| virtual void | visitSBendWrapper (const SBendWrapper &) |
| Apply the algorithm to an SBend wrapper.. More... | |
| virtual void | visitIntegrator (const Integrator &) |
| Apply the algorithm to a generic integrator. More... | |
| virtual void | visitTrackIntegrator (const TrackIntegrator &) |
| Apply the algorithm to an integrator capable of tracking. More... | |
Public Member Functions inherited from BeamlineVisitor | |
| BeamlineVisitor () | |
| virtual | ~BeamlineVisitor () |
Private Member Functions | |
| TransportMapper () | |
| TransportMapper (const TransportMapper &) | |
| void | operator= (const TransportMapper &) |
| void | applyDrift (double length) |
| void | applyEntranceFringe (double edge, const BMultipoleField &field, double scale) |
| void | applyExitFringe (double edge, const BMultipoleField &field, double scale) |
| void | applyTransportMap (double length, double refLength, double h, const FTps< double, 2 > &Fx, const FTps< double, 2 > &Fy) |
| void | applyMultipoleBody (double length, double refLength, const BMultipoleField &field, double scale) |
| void | applySBendBody (double length, double refLength, double h, const BMultipoleField &field, double scale) |
| void | applyThinMultipole (const BMultipoleField &field, double factor) |
| Thin multipole kick. More... | |
| void | applyThinSBend (const BMultipoleField &field, double scale, double h) |
| Thin SBend kick. More... | |
| void | applyTransform (const Euclid3D &, double refLength) |
| Apply transform. More... | |
| FTps< double, 2 > | buildSBendVectorPotential (const BMultipoleField &, double h) |
| Construct the vector potential for a SBend. More... | |
Private Attributes | |
| TransportMap< double, 6 > | itsMap |
Additional Inherited Members | |
Public Types inherited from AbstractMapper | |
| enum | { X, PX, Y, PY, T, PT } |
Protected Member Functions inherited from AbstractMapper | |
| FTps< double, 6 > | buildMultipoleVectorPotential (const BMultipoleField &) |
| Construct the vector potential for a Multipole. More... | |
| FTps< double, 6 > | buildSBendVectorPotential (const BMultipoleField &, double h) |
| Construct the vector potential for an SBend. More... | |
Protected Attributes inherited from AbstractMapper | |
| const PartData | itsReference |
| The reference information. More... | |
Protected Attributes inherited from DefaultVisitor | |
| const Beamline & | itsLine |
| bool | back_beam |
| bool | back_track |
| bool | back_path |
| double | flip_B |
| double | flip_s |
Build a map using a transport map for each elements.
Definition at line 70 of file TransportMapper.h.
| TransportMapper::TransportMapper | ( | const Beamline & | beamline, |
| const PartData & | reference, | ||
| bool | revBeam, | ||
| bool | revTrack | ||
| ) |
Constructor.
Definition at line 66 of file TransportMapper.cpp.
|
virtual |
Definition at line 73 of file TransportMapper.cpp.
|
private |
|
private |
|
private |
Definition at line 459 of file TransportMapper.cpp.
References PartData::getBeta(), PartData::getM(), PartData::getP(), itsMap, AbstractMapper::itsReference, AbstractMapper::PT, AbstractMapper::PX, AbstractMapper::PY, sqrt(), AbstractMapper::T, AbstractMapper::X, and AbstractMapper::Y.
Referenced by visitCCollimator(), visitCorrector(), visitDegrader(), visitDiagnostic(), visitDrift(), visitFlexibleCollimator(), visitLambertson(), visitMonitor(), visitRFCavity(), visitRFQuadrupole(), visitSeparator(), visitSeptum(), and visitSolenoid().

|
private |
Definition at line 475 of file TransportMapper.cpp.
References itsMap, BMultipoleField::normal(), AbstractMapper::PX, AbstractMapper::PY, tan(), AbstractMapper::X, and AbstractMapper::Y.
Referenced by visitRBend(), and visitSBend().

|
private |
Definition at line 487 of file TransportMapper.cpp.
References itsMap, BMultipoleField::normal(), AbstractMapper::PX, AbstractMapper::PY, tan(), AbstractMapper::X, and AbstractMapper::Y.
Referenced by visitRBend(), and visitSBend().

|
private |
Definition at line 589 of file TransportMapper.cpp.
References applyTransportMap(), itsMap, FTps< T, N >::makeVariable(), BMultipoleField::normal(), BMultipoleField::order(), FTps< T, N >::setCoefficient(), FTps< T, N >::setGlobalTruncOrder(), BMultipoleField::skew(), AbstractMapper::X, and AbstractMapper::Y.
Referenced by visitMultipole(), and visitRBend().

|
private |
Definition at line 625 of file TransportMapper.cpp.
References applyTransportMap(), buildSBendVectorPotential(), and FTps< T, N >::derivative().
Referenced by visitSBend().

|
private |
Thin multipole kick.
Definition at line 640 of file TransportMapper.cpp.
References itsMap, BMultipoleField::normal(), BMultipoleField::order(), AbstractMapper::PX, AbstractMapper::PY, BMultipoleField::skew(), AbstractMapper::X, and AbstractMapper::Y.
Referenced by visitMultipole(), visitRBend(), and visitSBend().

|
private |
Thin SBend kick.
Definition at line 663 of file TransportMapper.cpp.
References buildSBendVectorPotential(), FTps< T, N >::derivative(), itsMap, AbstractMapper::PX, AbstractMapper::PY, AbstractMapper::X, and AbstractMapper::Y.

|
private |
Apply transform.
Definition at line 679 of file TransportMapper.cpp.
References PartData::getBeta(), PartData::getM(), PartData::getP(), Euclid3D::getX(), Euclid3D::getY(), Euclid3D::getZ(), Euclid3D::isIdentity(), itsMap, AbstractMapper::itsReference, Euclid3D::M(), AbstractMapper::PT, AbstractMapper::PX, AbstractMapper::PY, sqrt(), AbstractMapper::T, AbstractMapper::X, and AbstractMapper::Y.
Referenced by visitAlignWrapper(), visitPatch(), visitRBend(), and visitSBend().

|
private |
Definition at line 500 of file TransportMapper.cpp.
References Hypervolume::hv(), PT, PX, PY, TransportFun< T, N >::setCoefficient(), sqrt(), T, X, and Y.
Referenced by applyMultipoleBody(), and applySBendBody().

|
private |
Construct the vector potential for a SBend.
Definition at line 711 of file TransportMapper.cpp.
References FTps< T, N >::derivative(), FTps< T, N >::integral(), itsMap, FTps< T, N >::makeVariable(), BMultipoleField::normal(), BMultipoleField::order(), FTps< T, N >::setCoefficient(), FTps< T, N >::setGlobalTruncOrder(), BMultipoleField::skew(), AbstractMapper::X, and AbstractMapper::Y.
Referenced by applySBendBody(), and applyThinSBend().

|
virtual |
Return the linear part of the accumulated map.
Implements AbstractMapper.
Definition at line 77 of file TransportMapper.cpp.
References itsMap.
|
virtual |
Return the transport part of the accumulated map.
Definition at line 86 of file TransportMapper.cpp.
References itsMap.
|
virtual |
Return the full map accumulated so far.
Implements AbstractMapper.
Definition at line 91 of file TransportMapper.cpp.
References itsMap.
|
private |
|
virtual |
Reset the linear part of the accumulated map for restart.
Implements AbstractMapper.
Definition at line 96 of file TransportMapper.cpp.
References itsMap.
|
virtual |
Reset the transport part of the accumulated map for restart.
Definition at line 109 of file TransportMapper.cpp.
References itsMap.
|
virtual |
Reset the full map for restart.
Implements AbstractMapper.
Definition at line 114 of file TransportMapper.cpp.
References itsMap.
|
virtual |
Apply the algorithm to an offset beamline object wrapper.
Reimplemented from DefaultVisitor.
Definition at line 405 of file TransportMapper.cpp.
References ElementBase::accept(), applyTransform(), DefaultVisitor::back_path, AlignWrapper::getElement(), AlignWrapper::getEntranceTransform(), AlignWrapper::getExitTransform(), Inverse(), Euclid3D::isIdentity(), and AlignWrapper::offset().

|
virtual |
Apply the algorithm to a BeamBeam.
Reimplemented from DefaultVisitor.
Definition at line 119 of file TransportMapper.cpp.
|
virtual |
Apply the algorithm to a BeamStripping.
Reimplemented from DefaultVisitor.
Definition at line 123 of file TransportMapper.cpp.
|
virtual |
Apply the algorithm to a collimator.
Reimplemented from DefaultVisitor.
Definition at line 127 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to an arbitrary component.
Reimplemented from DefaultVisitor.
Definition at line 132 of file TransportMapper.cpp.
References DefaultVisitor::back_beam, DefaultVisitor::back_track, itsMap, AbstractMapper::itsReference, and Component::trackMap().

|
virtual |
Apply the algorithm to a Corrector.
Reimplemented from DefaultVisitor.
Definition at line 139 of file TransportMapper.cpp.
References applyDrift(), Physics::c, DefaultVisitor::flip_B, DefaultVisitor::flip_s, BDipoleField::getBx(), BDipoleField::getBy(), ElementBase::getElementLength(), Corrector::getField(), PartData::getP(), PartData::getQ(), itsMap, AbstractMapper::itsReference, AbstractMapper::PX, and AbstractMapper::PY.

|
virtual |
Apply the algorithm to a CyclotronValley.
Reimplemented from DefaultVisitor.
Definition at line 401 of file TransportMapper.cpp.
|
virtual |
Apply the algorithm to a Degrader.
Reimplemented from DefaultVisitor.
Definition at line 154 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a Diagnostic.
Reimplemented from DefaultVisitor.
Definition at line 158 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a Drift.
Reimplemented from DefaultVisitor.
Definition at line 163 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a flexible collimator.
Reimplemented from DefaultVisitor.
Definition at line 167 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a Lambertson.
Reimplemented from DefaultVisitor.
Definition at line 171 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to an integrator capable of mapping.
Reimplemented from DefaultVisitor.
Definition at line 427 of file TransportMapper.cpp.
References DefaultVisitor::back_beam, DefaultVisitor::back_track, itsMap, AbstractMapper::itsReference, and MapIntegrator::trackMap().

|
virtual |
Apply the algorithm to a Marker.
Reimplemented from DefaultVisitor.
Definition at line 177 of file TransportMapper.cpp.
|
virtual |
Apply the algorithm to a Monitor.
Reimplemented from DefaultVisitor.
Definition at line 182 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a Multipole.
Reimplemented from DefaultVisitor.
Definition at line 187 of file TransportMapper.cpp.
References applyMultipoleBody(), applyThinMultipole(), Physics::c, DefaultVisitor::flip_B, DefaultVisitor::flip_s, ElementBase::getElementLength(), Multipole::getField(), PartData::getP(), PartData::getQ(), and AbstractMapper::itsReference.

|
virtual |
Apply the algorithm to a ParallelPlate.
Reimplemented from DefaultVisitor.
Definition at line 397 of file TransportMapper.cpp.
|
virtual |
Apply the algorithm to a patch.
Reimplemented from DefaultVisitor.
Definition at line 203 of file TransportMapper.cpp.
References applyTransform(), DefaultVisitor::back_path, Patch::getPatch(), and Inverse().

|
virtual |
Apply the algorithm to a probe.
Reimplemented from DefaultVisitor.
Definition at line 208 of file TransportMapper.cpp.
|
virtual |
Apply the algorithm to a RBend.
Reimplemented from DefaultVisitor.
Definition at line 213 of file TransportMapper.cpp.
References applyEntranceFringe(), applyExitFringe(), applyMultipoleBody(), applyThinMultipole(), applyTransform(), DefaultVisitor::back_path, Physics::c, DefaultVisitor::flip_B, DefaultVisitor::flip_s, RBendGeometry::getArcLength(), RBendGeometry::getBendAngle(), RBendGeometry::getElementLength(), RBendGeometry::getEntrancePatch(), RBend::getEntryFaceRotation(), RBend::getExitFaceRotation(), RBendGeometry::getExitPatch(), RBend::getField(), RBend::getGeometry(), PartData::getP(), PartData::getQ(), Inverse(), AbstractMapper::itsReference, and Euclid3D::YRotation().

|
virtual |
Apply the algorithm to a RFCavity.
Reimplemented from DefaultVisitor.
Definition at line 269 of file TransportMapper.cpp.
References applyDrift(), Physics::c, DefaultVisitor::flip_s, RFCavity::getAmplitude(), PartData::getBeta(), RFCavity::getElementLength(), RFCavity::getFrequency(), PartData::getP(), RFCavity::getPhase(), itsMap, AbstractMapper::itsReference, AbstractMapper::PT, sin(), and AbstractMapper::T.

|
virtual |
Apply the algorithm to a RFQuadrupole.
Reimplemented from DefaultVisitor.
Definition at line 285 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a SBend.
Reimplemented from DefaultVisitor.
Definition at line 291 of file TransportMapper.cpp.
References applyEntranceFringe(), applyExitFringe(), applySBendBody(), applyThinMultipole(), applyTransform(), DefaultVisitor::back_path, Physics::c, DefaultVisitor::flip_B, DefaultVisitor::flip_s, PlanarArcGeometry::getArcLength(), PlanarArcGeometry::getBendAngle(), PlanarArcGeometry::getCurvature(), PlanarArcGeometry::getElementLength(), SBend::getEntryFaceRotation(), SBend::getExitFaceRotation(), SBend::getField(), SBend::getGeometry(), PartData::getP(), PartData::getQ(), AbstractMapper::itsReference, and Euclid3D::YRotation().

|
virtual |
Apply the algorithm to a Separator.
Reimplemented from DefaultVisitor.
Definition at line 337 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, ElementBase::getElementLength(), Separator::getEx(), Separator::getEy(), PartData::getP(), PartData::getQ(), itsMap, AbstractMapper::itsReference, AbstractMapper::PT, AbstractMapper::PX, and AbstractMapper::PY.

|
virtual |
Apply the algorithm to a Septum.
Reimplemented from DefaultVisitor.
Definition at line 354 of file TransportMapper.cpp.
References applyDrift(), DefaultVisitor::flip_s, and ElementBase::getElementLength().

|
virtual |
Apply the algorithm to a Solenoid.
Reimplemented from DefaultVisitor.
Definition at line 360 of file TransportMapper.cpp.
References applyDrift(), Physics::c, cos(), DefaultVisitor::flip_B, DefaultVisitor::flip_s, PartData::getBeta(), Solenoid::getBz(), Solenoid::getElementLength(), PartData::getM(), PartData::getP(), PartData::getQ(), itsMap, AbstractMapper::itsReference, AbstractMapper::PT, AbstractMapper::PX, AbstractMapper::PY, sin(), sqrt(), AbstractMapper::T, AbstractMapper::X, and AbstractMapper::Y.

|
private |
Definition at line 228 of file TransportMapper.h.
Referenced by applyDrift(), applyEntranceFringe(), applyExitFringe(), applyMultipoleBody(), applyThinMultipole(), applyThinSBend(), applyTransform(), buildSBendVectorPotential(), getMap(), setMap(), visitComponent(), visitCorrector(), visitMapIntegrator(), visitRFCavity(), visitSeparator(), and visitSolenoid().
1.8.5