CMS 3D CMS Logo

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