// PropCylDCA.h #ifndef PropCylDCA_h #define PropCylDCA_h // Propagates tracks from a Cylinder to a DCA surface. // // Propagation will fail if either the origin is not a cylinder, // or the destination is not a DCA surface. // // ObjStream example: // // [ myprop PropCylDCA bfield=2.0 ] // // To use the global bfield: // // [ myprop PropCylDCA bfield=@bfield ] // #include "trfbase/PropDirected.h" #include "trfbase/ObjDoublePtr.h" namespace trf { class PropCylDCA : public PropDirected { // Attributes *************************************************** private: // Constant magnet field. ObjDoublePtr _bfield; // Methods ****************************************************** public: // static methods // Return the type name. static TypeName get_type_name() { return "PropCylDCA"; } // Return the creator. static ObjCreator get_creator(); // Return the type. static Type get_static_type() { return get_creator(); } public: // constructors (from the magnetic field in Tesla) PropCylDCA(ObjDoublePtr bfield); // destructor ~PropCylDCA(); // clone Propagator* new_propagator() const; // Return the type. Type get_type() const { return get_static_type(); } // Write the object data. ObjData write_data() const; // propagate a track without error in the specified direction PropStat vec_dir_prop(VTrack& trv, const Surface& srf, PropDir dir, TrackDerivative* pderiv =0) const; // return the magnetic field double get_bfield() const; private: // output stream void ostr(std::ostream& stream) const; }; } // end namespace trf #endif