Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:44

0001 #pragma once
0002 
0003 #include <string>
0004 #include <sstream>
0005 #include <glm/glm.hpp>
0006 
0007 struct SPlaceRing
0008 {
0009     unsigned idx ; 
0010     double z ; 
0011     double costh ; 
0012     double sinth ; 
0013     double circ ; 
0014     unsigned num ; 
0015 
0016     std::string desc() const ; 
0017     static std::string Desc(const SPlaceRing* rr, unsigned num_ring); 
0018     double phi(unsigned item_idx) const ; 
0019     glm::tvec3<double> upoint(unsigned item_idx); 
0020 };
0021 
0022 
0023 inline std::string SPlaceRing::desc() const
0024 {
0025     std::stringstream ss ; 
0026     ss << "SPlaceRing::desc "
0027        << " idx "  << std::setw(5) << idx 
0028        << " z "    << std::fixed << std::setw(15) << std::setprecision(5) << z 
0029        << " circ " << std::fixed << std::setw(15) << std::setprecision(5) << circ
0030        << " num "  << std::setw(5) << num
0031        ; 
0032 
0033     std::string s = ss.str(); 
0034     return s ; 
0035 }
0036 inline std::string SPlaceRing::Desc(const SPlaceRing* rr, unsigned num_ring)
0037 {
0038     std::stringstream ss ; 
0039     for(unsigned i=0 ; i < num_ring ; i++ ) ss << rr[i].desc() << std::endl ; 
0040     std::string s = ss.str(); 
0041     return s ; 
0042 }
0043 inline double SPlaceRing::phi(unsigned item_idx) const 
0044 {
0045     assert( item_idx < num ); 
0046     return 2.*glm::pi<double>()*double(item_idx)/double(num-1 ) ; 
0047 }
0048 
0049 inline glm::tvec3<double> SPlaceRing::upoint(unsigned item_idx )
0050 {
0051     double ph = phi(item_idx); 
0052 
0053     glm::tvec3<double> pt ; 
0054     pt.x = sinth*cos(ph) ; 
0055     pt.y = sinth*sin(ph) ; 
0056     pt.z = costh ; 
0057     return pt ; 
0058 }
0059 
0060