Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/tools/sg/cloud2plot

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.
  3 
  4 #ifndef tools_sg_cloud2plot
  5 #define tools_sg_cloud2plot
  6 
  7 #include "plottables"
  8 
  9 #include "../words"
 10 #include "../num2s"
 11 
 12 #include "../histo/c2d"
 13 
 14 #ifdef TOOLS_MEM
 15 #include "../mem"
 16 #endif
 17 
 18 namespace tools {
 19 namespace sg {
 20 
 21 class c2d2plot : public virtual points2D {
 22   TOOLS_SCLASS(tools::sg::c2d2plot)
 23 public: //plottable
 24   virtual plottable* copy() const {return new c2d2plot(*this);}
 25   virtual bool is_valid() const {return true;}
 26   virtual const std::string& name() const {return m_name;}
 27   virtual void set_name(const std::string& a_s) {m_name = a_s;}
 28   virtual const std::string& title() const {return m_data.title();}
 29   virtual const std::string& legend() const {return m_legend;}
 30   virtual void set_legend(const std::string& a_s) {m_legend = a_s;}
 31 
 32   virtual void infos(const std::string& a_opts,std::string& a_sinfos) const {
 33     a_sinfos.clear();
 34     std::string f_lf("\n");
 35     std::vector<std::string> ws;
 36     words(a_opts," ",false,ws);
 37     std::vector<std::string>::const_iterator it;
 38 
 39     for(it=ws.begin();it!=ws.end();++it) {
 40       if(((*it)=="name") && m_name.size()) {
 41         if(a_sinfos.size()) a_sinfos += f_lf;
 42         a_sinfos += "Name\n";
 43         a_sinfos += m_name;
 44 
 45       } else if((*it)=="entries") {
 46         if(a_sinfos.size()) a_sinfos += f_lf;
 47         a_sinfos += "Entries\n";
 48         if(!numas<unsigned int>(m_data.entries(),a_sinfos)){}
 49 
 50       } else if((*it)=="mean") {
 51         if(a_sinfos.size()) a_sinfos += f_lf;
 52         a_sinfos += "MeanX\n";
 53         if(!numas<double>(m_data.mean_x(),a_sinfos)){}
 54         a_sinfos += f_lf;
 55         a_sinfos += "MeanY\n";
 56         if(!numas<double>(m_data.mean_y(),a_sinfos)){}
 57 
 58       } else if((*it)=="rms") {
 59         if(a_sinfos.size()) a_sinfos += f_lf;
 60         a_sinfos += "RMS X\n";
 61         if(!numas<double>(m_data.rms_x(),a_sinfos)){}
 62         a_sinfos += f_lf;
 63         a_sinfos += "RMS Y\n";
 64         if(!numas<double>(m_data.rms_y(),a_sinfos)){}
 65 
 66       }
 67     }
 68   }
 69 public: //points2D
 70   virtual float x_axis_min() const {return (float)m_data.lower_edge_x();}
 71   virtual float x_axis_max() const {return (float)m_data.upper_edge_x();}
 72   virtual float y_axis_min() const {return (float)m_data.lower_edge_y();}
 73   virtual float y_axis_max() const {return (float)m_data.upper_edge_y();}
 74 
 75   virtual unsigned int points() const {return m_data.entries();}
 76   virtual bool ith_point(unsigned int a_index,float& a_x,float& a_y) const {
 77     if(a_index>=m_data.entries()) {a_x = 0;a_y = 0;return false;}
 78     if(a_index>=m_data.entries()) {a_x = 0;a_y = 0;return false;}
 79     a_x = (float)m_data.value_x(a_index);
 80     a_y = (float)m_data.value_y(a_index);
 81     return true;
 82   }
 83 public:
 84   c2d2plot(const histo::c2d& a_data)
 85   :m_data(a_data)
 86   {
 87 #ifdef TOOLS_MEM
 88     mem::increment(s_class().c_str());
 89 #endif
 90   }
 91   virtual ~c2d2plot(){
 92 #ifdef TOOLS_MEM
 93     mem::decrement(s_class().c_str());
 94 #endif
 95   }
 96 public:
 97   c2d2plot(const c2d2plot& a_from)
 98   :plottable(a_from)
 99   ,points2D(a_from)
100   ,m_data(a_from.m_data)
101   ,m_name(a_from.m_name)
102   ,m_legend(a_from.m_legend)
103   {
104 #ifdef TOOLS_MEM
105     mem::increment(s_class().c_str());
106 #endif
107   }
108   c2d2plot& operator=(const c2d2plot& a_from){
109     m_name = a_from.m_name;
110     m_legend = a_from.m_legend;
111     return *this;
112   }
113 protected:
114   const histo::c2d& m_data;
115   std::string m_name;
116   std::string m_legend;
117 };
118 
119 }}
120 
121 #include "../histo/c3d"
122 
123 namespace tools {
124 namespace sg {
125 
126 class c3d2plot : public virtual points3D {
127   TOOLS_SCLASS(tools::sg::c3d2plot)
128 public: //plottable
129   virtual plottable* copy() const {return new c3d2plot(*this);}
130   virtual bool is_valid() const {return true;}
131   virtual const std::string& name() const {return m_name;}
132   virtual void set_name(const std::string& a_s) {m_name = a_s;}
133   virtual const std::string& title() const {return m_data.title();}
134   virtual const std::string& legend() const {return m_legend;}
135   virtual void set_legend(const std::string& a_s) {m_legend = a_s;}
136 
137   virtual void infos(const std::string& a_opts,std::string& a_sinfos) const {
138     a_sinfos.clear();
139     std::string f_lf("\n");
140     std::vector<std::string> ws;
141     words(a_opts," ",false,ws);
142     std::vector<std::string>::const_iterator it;
143 
144     for(it=ws.begin();it!=ws.end();++it) {
145       if(((*it)=="name") && m_name.size()) {
146         if(a_sinfos.size()) a_sinfos += f_lf;
147         a_sinfos += "Name\n";
148         a_sinfos += m_name;
149 
150       } else if((*it)=="entries") {
151         if(a_sinfos.size()) a_sinfos += f_lf;
152         a_sinfos += "Entries\n";
153         if(!numas<unsigned int>(m_data.entries(),a_sinfos)){}
154 
155       } else if((*it)=="mean") {
156         if(a_sinfos.size()) a_sinfos += f_lf;
157         a_sinfos += "MeanX\n";
158         if(!numas<double>(m_data.mean_x(),a_sinfos)){}
159         a_sinfos += f_lf;
160         a_sinfos += "MeanY\n";
161         if(!numas<double>(m_data.mean_y(),a_sinfos)){}
162         a_sinfos += f_lf;
163         a_sinfos += "MeanZ\n";
164         if(!numas<double>(m_data.mean_z(),a_sinfos)){}
165 
166       } else if((*it)=="rms") {
167         if(a_sinfos.size()) a_sinfos += f_lf;
168         a_sinfos += "RMS X\n";
169         if(!numas<double>(m_data.rms_x(),a_sinfos)){}
170         a_sinfos += f_lf;
171         a_sinfos += "RMS Y\n";
172         if(!numas<double>(m_data.rms_y(),a_sinfos)){}
173         a_sinfos += f_lf;
174         a_sinfos += "RMS Z\n";
175         if(!numas<double>(m_data.rms_z(),a_sinfos)){}
176 
177       }
178     }
179   }
180 public: //points2D
181   virtual float x_axis_min() const {return (float)m_data.lower_edge_x();}
182   virtual float x_axis_max() const {return (float)m_data.upper_edge_x();}
183   virtual float y_axis_min() const {return (float)m_data.lower_edge_y();}
184   virtual float y_axis_max() const {return (float)m_data.upper_edge_y();}
185   virtual float z_axis_min() const {return (float)m_data.lower_edge_z();}
186   virtual float z_axis_max() const {return (float)m_data.upper_edge_z();}
187 
188   virtual unsigned int points() const {return m_data.entries();}
189   virtual bool ith_point(unsigned int a_index,float& a_x,float& a_y,float& a_z) const {
190     if(a_index>=m_data.entries()) {a_x = 0;a_y = 0;a_z = 0;return false;}
191     if(a_index>=m_data.entries()) {a_x = 0;a_y = 0;a_z = 0;return false;}
192     a_x = (float)m_data.value_x(a_index);
193     a_y = (float)m_data.value_y(a_index);
194     a_z = (float)m_data.value_z(a_index);
195     return true;
196   }
197 public:
198   c3d2plot(const histo::c3d& a_data)
199   :m_data(a_data)
200   {
201 #ifdef TOOLS_MEM
202     mem::increment(s_class().c_str());
203 #endif
204   }
205   virtual ~c3d2plot(){
206 #ifdef TOOLS_MEM
207     mem::decrement(s_class().c_str());
208 #endif
209   }
210 public:
211   c3d2plot(const c3d2plot& a_from)
212   :plottable(a_from)
213   ,points3D(a_from)
214   ,m_data(a_from.m_data)
215   ,m_name(a_from.m_name)
216   ,m_legend(a_from.m_legend)
217   {
218 #ifdef TOOLS_MEM
219     mem::increment(s_class().c_str());
220 #endif
221   }
222   c3d2plot& operator=(const c3d2plot& a_from){
223     m_name = a_from.m_name;
224     m_legend = a_from.m_legend;
225     return *this;
226   }
227 protected:
228   const histo::c3d& m_data;
229   std::string m_name;
230   std::string m_legend;
231 };
232 
233 }}
234 
235 #endif