00001 #ifndef ALGORITHM_DD_ANGULAR_H 00002 # define ALGORITHM_DD_ANGULAR_H 00003 00004 # include "DetectorDescription/Base/interface/DDTypes.h" 00005 # include "DetectorDescription/Base/interface/DDRotationMatrix.h" 00006 # include "DetectorDescription/Algorithm/interface/DDAlgorithm.h" 00007 00008 class DDAngular : public DDAlgorithm 00009 { 00010 public: 00011 DDAngular( void ); 00012 virtual ~DDAngular( void ); 00013 00014 void initialize( const DDNumericArguments & nArgs, 00015 const DDVectorArguments & vArgs, 00016 const DDMapArguments & mArgs, 00017 const DDStringArguments & sArgs, 00018 const DDStringVectorArguments & vsArgs ); 00019 00020 void execute( DDCompactView& cpv ); 00021 00022 private: 00023 00024 DD3Vector fUnitVector( double theta, double phi ); 00025 int m_n; //Number of copies 00026 int m_startCopyNo; //Start Copy number 00027 int m_incrCopyNo; //Increment in Copy number 00028 double m_startAngle; //Start angle 00029 double m_rangeAngle; //Range in angle 00030 double m_radius; //Radius 00031 double m_delta; //Increment in phi 00032 std::vector<double> m_center; //Phi values 00033 std::vector<double> m_rotateSolid; //Rotation of the solid values 00034 00035 std::string m_idNameSpace; //Namespace of this and ALL sub-parts 00036 std::pair<std::string, std::string> m_childNmNs; //Child name 00037 //Namespace of the child 00038 00039 DDRotationMatrix m_solidRot; //Rotation of the solid 00040 }; 00041 00042 #endif // ALGORITHM_DD_ANGULAR_H