CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/DetectorDescription/Core/src/DDAlgo.cc

Go to the documentation of this file.
00001 #include "DetectorDescription/Core/interface/DDAlgo.h"
00002 #include "DetectorDescription/ExprAlgo/interface/AlgoPos.h"
00003 
00004 //DDBase<DDName,AlgoPos*>::StoreT::pointer_type
00005 //  DDBase<DDName,AlgoPos*>::StoreT::instance_ = 0;
00006 
00007 std::ostream & operator<<(std::ostream & os, const DDAlgo & algo)
00008 {
00009  DDBase<DDName,AlgoPos*>::def_type defined(algo.isDefined());
00010   if (defined.first) {
00011     os << *(defined.first) << " ";
00012     if (defined.second) {
00013       algo.rep().stream(os); 
00014     }
00015     else {
00016       os << "* algorithm not defined * ";  
00017     }
00018   }  
00019   else {
00020     os << "* algorithm not declared * ";  
00021   }  
00022   return os;
00023   
00024 }
00025 
00026 
00027 DDAlgo::DDAlgo() : DDBase<DDName,AlgoPos*>()
00028 { } 
00029 
00030 
00031 DDAlgo::DDAlgo(const DDName & name) : DDBase<DDName,AlgoPos*>()
00032 { 
00033   prep_ = StoreT::instance().create(name);
00034 }
00035 
00036 
00037 DDAlgo::DDAlgo(const DDName & name, AlgoPos * a) : DDBase<DDName,AlgoPos*>()
00038 
00039 { 
00040   prep_ = StoreT::instance().create(name,a);
00041 }
00042 
00043 
00044 
00045 void DDAlgo::setParameters(int start, int end, int incr,
00046                          const parS_type & ps, const parE_type & pe)
00047 {
00048    rep().setParameters(start, end, incr, ps, pe);
00049 }                        
00050 
00051 
00052 int DDAlgo::start() const
00053 {
00054   return rep().start();
00055 }
00056 
00057 int DDAlgo::end() const
00058 {
00059   return rep().end();
00060 }
00061 
00062 int DDAlgo::incr() const
00063 {
00064   return rep().incr();
00065 }
00066 
00067 const parS_type & DDAlgo::parS() const
00068 {
00069   return rep().parS();
00070 }
00071 
00072 const parE_type & DDAlgo::parE() const
00073 {
00074   return rep().parE();
00075 }
00076 
00077 
00078 DDTranslation DDAlgo::translation()
00079 {
00080   return rep().translation();
00081 }
00082 
00083   
00084 DDRotationMatrix DDAlgo::rotation()
00085 {
00086   return rep().rotation();
00087 }
00088 
00089 
00090 int DDAlgo::copyno() const
00091 {
00092   return rep().copyno();
00093 }
00094 
00095 
00096 #include <cstdio>
00097 std::string DDAlgo::label() const
00098 {
00099   char buffer [50]; 
00100   /*int n =*/ sprintf(buffer,"%d",copyno());
00101   return std::string(buffer);
00102 }
00103 
00104 
00105 void DDAlgo::next()
00106 {
00107   rep().next();
00108 }
00109 
00110 
00111 bool DDAlgo::go() const
00112 {
00113   return rep().go();
00114 }
00115   
00116 // friend, factory function
00117 DDAlgo DDalgo(const DDName & n, AlgoPos * a)
00118 {
00119   return DDAlgo(n,a);
00120 }
00121 
00122 
00123 // void DDAlgo::clear()
00124 // {
00125 //  StoreT::instance().clear();
00126 // }