CMS 3D CMS Logo

ExtrudedPolygon.cc
Go to the documentation of this file.
2 
3 #include "CLHEP/Units/GlobalSystemOfUnits.h"
4 #include "CLHEP/Units/SystemOfUnits.h"
9 #include <cassert>
10 
12 
13 ExtrudedPolygon::ExtrudedPolygon( const std::vector<double> & x,
14  const std::vector<double> & y,
15  const std::vector<double> & z,
16  const std::vector<double> & zx,
17  const std::vector<double> & zy,
18  const std::vector<double> & zscale) : Solid( ddextrudedpolygon )
19 {
20  assert( x.size() == y.size());
21  assert( z.size() == zx.size());
22  assert( z.size() == zy.size());
23  assert( z.size() == zscale.size());
24 
25  p_.reserve( x.size() + y.size() + z.size() + zx.size() + zy.size() + zscale.size() + 1 );
26  p_.emplace_back( z.size());
27  p_.insert( p_.end(), x.begin(), x.end());
28  p_.insert( p_.end(), y.begin(), y.end());
29  p_.insert( p_.end(), z.begin(), z.end());
30  p_.insert( p_.end(), zx.begin(), zx.end());
31  p_.insert( p_.end(), zy.begin(), zy.end());
32  p_.insert( p_.end(), zscale.begin(), zscale.end());
33 }
34 
36 {
37  double volume = 0;
38  /* FIXME: volume is not implemented */
39  return volume;
40 }
41 
42 void
43 DDI::ExtrudedPolygon::stream( std::ostream & os ) const
44 {
45  auto xysize = ( unsigned int )(( p_.size() - 4*p_[0]) * 0.5 );
46  os << " XY Points[cm]=";
47  for( unsigned int k = 1; k <= xysize; ++k )
48  os << p_[k]/cm << ", " << p_[k + xysize]/cm << "; ";
49  os << " with " << p_[0] << " Z sections:";
50  unsigned int m0 = p_.size() - 4*p_[0];
51  for( unsigned int m = m0; m < m0 + p_[0]; ++m )
52  {
53  os << " z[cm]=" << p_[m]/cm;
54  os << ", x[cm]=" << p_[m+p_[0]]/cm;
55  os << ", y[cm]=" << p_[m+2*p_[0]]/cm;
56  os << ", scale[cm]=" << p_[m+3*p_[0]]/cm << ";";
57  }
58 }
double volume() const
float float float z
T x() const
Cartesian x coordinate.
void stream(std::ostream &) const
int k[5][pyjets_maxn]
std::vector< double > p_
Definition: Solid.h:32