CMS 3D CMS Logo

DDAlgoArguments.h
Go to the documentation of this file.
1 #ifndef DETECTOR_DESCRIPTION_DD_ALGO_ARGUMENTS_H
2 #define DETECTOR_DESCRIPTION_DD_ALGO_ARGUMENTS_H
3 
4 #include "XML/XML.h"
5 #include "DD4hep/DetElement.h"
9 
10 #include <map>
11 #include <sstream>
12 
13 namespace cms
14 {
15  constexpr unsigned int hash( const char* str, int h = 0 )
16  {
17  return !str[h] ? 5381 : ( hash( str, h+1 )*33 ) ^ str[h];
18  }
19 
20  inline unsigned int hash( const std::string& str )
21  {
22  return hash( str.c_str());
23  }
24 
25  dd4hep::Rotation3D makeRotation3D( double thetaX, double phiX,
26  double thetaY, double phiY,
27  double thetaZ, double phiZ );
28 
29  dd4hep::Rotation3D makeRotation3D( dd4hep::Rotation3D rotation,
30  const std::string& axis, double angle );
31 
33  {
34  public:
36 
37  DDAlgoArguments() = delete;
38  DDAlgoArguments( const DDAlgoArguments& copy ) = delete;
39  DDAlgoArguments& operator=( const DDAlgoArguments& copy ) = delete;
40  ~DDAlgoArguments() = default;
41 
44  xml_h element;
45 
46  std::string parentName() const;
47  std::string childName() const;
48  bool find( const std::string& name ) const;
49  template<typename T> T value( const std::string& name ) const;
50  std::string str( const std::string& nam ) const;
51  double dble( const std::string& nam ) const;
52  int integer( const std::string& nam ) const;
53  std::vector<double> vecDble( const std::string& nam ) const;
54  std::vector<int> vecInt( const std::string& nam ) const;
55  std::vector<std::string> vecStr( const std::string& nam ) const;
56 
57  private:
58 
59  xml_h rawArgument( const std::string& name ) const;
60  std::string resolved_scalar_arg( const std::string& name ) const;
61  };
62 }
63 
64 #endif
std::string childName() const
Access value of child&#39;name from the xml element.
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
def copy(args, dbName)
T value(const std::string &name) const
#define constexpr
int integer(const std::string &nam) const
Shortcut to access integer arguments.
dd4hep::Rotation3D makeRotation3D(double thetaX, double phiX, double thetaY, double phiY, double thetaZ, double phiZ)
xml_h rawArgument(const std::string &name) const
Access raw argument as a string by name.
~DDAlgoArguments()=default
constexpr unsigned int hash(const char *str, int h=0)
Namespace of DDCMS conversion namespace.
DDAlgoArguments & operator=(const DDAlgoArguments &copy)=delete
std::vector< double > vecDble(const std::string &nam) const
Shortcut to access vector<double> arguments.
double dble(const std::string &nam) const
Shortcut to access double arguments.
cms::DDParsingContext & context
std::vector< std::string > vecStr(const std::string &nam) const
Shortcut to access vector<string> arguments.
#define str(s)
bool find(const std::string &name) const
Check the existence of an argument by name.
long double T
std::vector< int > vecInt(const std::string &nam) const
Shortcut to access vector<int> arguments.
std::string resolved_scalar_arg(const std::string &name) const
Access namespace resolved argument as a string by name.
std::string parentName() const
Access value of rParent child node.
std::string str(const std::string &nam) const
Shortcut to access string arguments.
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
Definition: angle.h:11