CMS 3D CMS Logo

DDConstant.cc
Go to the documentation of this file.
2 
3 #include <string>
4 #include <utility>
5 #include <vector>
6 
10 
12 
14 {
15  prep_ = StoreT::instance().create(name);
16 }
17 
19 {
20  prep_ = StoreT::instance().create(name,vals);
21 }
22 
23 std::ostream & operator<<(std::ostream & os, const DDConstant & cons)
24 {
25  os << "DDConstant name=" << cons.name();
26 
27  if(cons.isDefined().second) {
28  os << " val=" << cons.value();
29  }
30  else {
31  os << " constant is not yet defined, only declared.";
32  }
33  return os;
34 }
35 
36 void
38 {
40  const auto& vars = eval.variables();
41  const auto& vals = eval.values();
42  if( vars.size() != vals.size()) {
43  throw cms::Exception( "DDException" )
44  << "DDConstants::createConstansFromEvaluator(): different size of variable names & values!";
45  }
46  for( const auto& it : vars ) {
47  auto found = it.find( "___" );
48  DDName name( std::string( it, found + 3, it.size() - 1 ), std::string( it, 0, found ));
49  double* dv = new double;
50  *dv = eval.eval( it.c_str());
51  DDConstant cst( name, dv );
52  }
53 }
Definition: DDBase.h:10
def_type isDefined() const
Definition: DDBase.h:110
const DDName & name() const
Definition: DDBase.h:78
DDName is used to identify DDD entities uniquely.
Definition: DDName.h:15
static value_type & instance()
double value() const
return the first stored value; does not check boundaries!
Definition: DDConstant.h:32
DDConstant()
an uninitialized constant; one can assign an initialized constant to make it valid ...
Definition: DDConstant.cc:11
static void createConstantsFromEvaluator()
creates all DDConstants from the variables of the ClhepEvaluator
Definition: DDConstant.cc:37
a named constant corresponding to the DDL-XML tag <Constant> and <ConstantsVector> ...
Definition: DDConstant.h:16
std::ostream & operator<<(std::ostream &os, const DDConstant &cons)
output operator for printing ...
Definition: DDConstant.cc:23