CMS 3D CMS Logo

DDAlgoArguments.h
Go to the documentation of this file.
1 #ifndef DetectorDescription_DDCMS_DDAlgoArguments_h
2 #define DetectorDescription_DDCMS_DDAlgoArguments_h
3 
4 #include "XML/XML.h"
10 
11 #include <map>
12 #include <sstream>
13 
14 namespace cms {
15 
16  static constexpr long s_executed = 1l;
17 
18  constexpr unsigned int hash(const char* str, int h = 0) { return !str[h] ? 5381 : (hash(str, h + 1) * 33) ^ str[h]; }
19 
20  inline unsigned int hash(const std::string& str) { return hash(str.c_str()); }
21 
22  DDRotationMatrix makeRotation3D(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ);
23 
24  DDRotationMatrix makeRotReflect(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ);
25 
27 
29  public:
31 
32  DDAlgoArguments() = delete;
33  DDAlgoArguments(const DDAlgoArguments& copy) = delete;
35  ~DDAlgoArguments() = default;
36 
39  xml_h element;
40 
41  std::string parentName() const;
42  std::string childName() const;
43  bool find(const std::string& name) const;
44  template <typename T>
45  T value(const std::string& name) const;
46  std::string str(const std::string& nam) const;
47  double dble(const std::string& nam) const;
48  int integer(const std::string& nam) const;
49  std::vector<double> vecDble(const std::string& nam) const;
50  std::vector<float> vecFloat(const std::string& nam) const;
51  std::vector<int> vecInt(const std::string& nam) const;
52  std::vector<std::string> vecStr(const std::string& nam) const;
54 
55  private:
56  xml_h rawArgument(const std::string& name) const;
58  };
59 } // namespace cms
60 
61 #endif
T value(const std::string &name) const
std::string childName() const
Access value of child&#39;name from the xml element.
xml_h rawArgument(const std::string &name) const
Access raw argument as a string by name.
double dble(const std::string &nam) const
Shortcut to access double arguments.
DDRotationMatrix makeRotation3D(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ)
std::string resolveValue(const std::string &value) const
std::string parentName() const
Access value of rParent child node.
static constexpr long s_executed
ROOT::Math::Rotation3D DDRotationMatrix
A DDRotationMatrix is currently implemented with a ROOT Rotation3D.
~DDAlgoArguments()=default
DDRotationMatrix makeRotReflect(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ)
std::vector< double > vecDble(const std::string &nam) const
Shortcut to access vector<double> arguments.
constexpr unsigned int hash(const char *str, int h=0)
Definition: value.py:1
Namespace of DDCMS conversion namespace.
std::vector< int > vecInt(const std::string &nam) const
Shortcut to access vector<int> arguments.
std::vector< float > vecFloat(const std::string &nam) const
Shortcut to access vector<float> arguments.
DDAlgoArguments & operator=(const DDAlgoArguments &copy)=delete
std::string str(const std::string &nam) const
Shortcut to access string arguments.
cms::DDParsingContext & context
int integer(const std::string &nam) const
Shortcut to access integer arguments.
bool find(const std::string &name) const
Check the existence of an argument by name.
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
#define str(s)
long double T
std::string resolved_scalar_arg(const std::string &name) const
Access namespace resolved argument as a string by name.
std::vector< std::string > vecStr(const std::string &nam) const
Shortcut to access vector<string> arguments.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11