00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // 00004 // Description: TrkVisitor is an implementation of the Visitor pattern 00005 // for use in calculating various things for different types of 00006 // trajectories. (See the book _Design Patterns_ or one of the 00007 // authors for a definition of the Visitor pattern.) It is the 00008 // abstract base class for visitors such as MomVisitor (the 00009 // momentum visitor) and others. 00010 // 00011 // Environment: 00012 // Software developed for the BaBar Detector at the SLAC B-Factory. 00013 // 00014 // Author(s): Justin Albert, Steve Schaffner 00015 // 00016 //------------------------------------------------------------------------ 00017 00018 #ifndef TRKVISITOR_H 00019 #define TRKVISITOR_H 00020 00021 class HelixTraj; 00022 class TrkCircleTraj; 00023 class NeutTraj; 00024 class TrkDifLineTraj; 00025 00026 // Class interface // 00027 class TrkVisitor { 00028 00029 public: 00030 00031 TrkVisitor(); 00032 virtual ~TrkVisitor(); 00033 00034 //******************************** 00035 //The visitor functions: 00036 //******************************** 00037 00038 virtual void trkVisitHelixTraj(const HelixTraj*) = 0; 00039 virtual void trkVisitCircleTraj(const TrkCircleTraj*) = 0; 00040 virtual void trkVisitNeutTraj(const NeutTraj*) = 0; 00041 virtual void trkVisitLineTraj(const TrkDifLineTraj*) = 0; 00042 00043 00044 }; 00045 00046 #endif