00001 #ifndef ExpAlgo_AlgoImpl_h 00002 #define ExpAlgo_AlgoImpl_h 00003 00004 #include "DetectorDescription/Base/interface/DDRotationMatrix.h" 00005 #include "DetectorDescription/Base/interface/DDTranslation.h" 00006 #include "DetectorDescription/Base/interface/DDAlgoPar.h" 00007 #include <string> 00008 00009 00010 class AlgoPos; 00011 00013 00019 class AlgoImpl 00020 { 00021 friend class AlgoPos; 00022 public: 00024 AlgoImpl(AlgoPos*, std::string label); 00025 00026 protected: 00027 virtual ~AlgoImpl(); 00028 00030 00034 virtual DD3Vector translation() = 0; 00035 00037 00041 virtual DDRotationMatrix rotation() = 0; 00042 00044 00062 virtual bool checkParameters() = 0; 00063 00065 00079 void terminate(); 00080 00082 00089 virtual int copyno() const; 00090 00092 00107 virtual void checkTermination(); 00108 00110 static std::string d2s(double x); 00111 00112 parS_type & ParS_; 00113 parE_type & ParE_; 00114 const int & start_; 00115 const int & end_; 00116 const int & incr_; 00117 const int & curr_; 00118 const int & count_; 00119 bool & terminate_; 00120 std::string & err_; 00121 std::string label_; 00122 }; 00123 00124 #endif