Belle II Software  release-08-01-10
GeoConfiguration.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 #include <TObject.h>
12 #include <geometry/dbobjects/GeoMaterial.h>
13 #include <geometry/dbobjects/GeoComponent.h>
14 #include <vector>
15 
16 
17 namespace Belle2 {
23  class GeoConfiguration: public TObject {
24  public:
26  GeoConfiguration() = default;
34  GeoConfiguration(const std::string& name, double width, double height, double length, const std::string& material): TObject(),
35  m_name(name), m_globalWidth(width), m_globalHeight(height), m_globalLength(length), m_globalMaterial(material) {}
37  void addMaterial(const GeoMaterial& material) { m_materials.emplace_back(material); }
39  void addComponent(const GeoComponent& component) { m_components.emplace_back(component); }
41  const std::string& getName() const { return m_name; }
44  double getGlobalWidth() const { return m_globalWidth; }
47  double getGlobalHeight() const { return m_globalHeight; }
50  double getGlobalLength() const { return m_globalLength; }
52  const std::string& getGlobalMaterial() const { return m_globalMaterial; }
54  const std::vector<GeoMaterial>& getMaterials() const { return m_materials; }
56  const std::vector<GeoComponent>& getComponents() const { return m_components; }
57  private:
59  std::vector<GeoMaterial> m_materials;
61  std::vector<GeoComponent> m_components;
63  std::string m_name;
65  double m_globalWidth{0};
67  double m_globalHeight{0};
69  double m_globalLength{0};
71  std::string m_globalMaterial;
74  };
76 }; // Belle2 namespace
Describe one component of the Geometry.
Definition: GeoComponent.h:19
configuration of the geometry
const std::vector< GeoComponent > & getComponents() const
get list of components
ClassDef(GeoConfiguration, 1)
Add ROOT reflection info.
double m_globalLength
half length of the global volume
void addMaterial(const GeoMaterial &material)
add a material to the list of materials
void addComponent(const GeoComponent &component)
add a component to the list of components
const std::vector< GeoMaterial > & getMaterials() const
get List of Materials
double m_globalWidth
half width of the global volume
double getGlobalWidth() const
get the half width of the global volume, that is length in + and - x direction.
std::vector< GeoMaterial > m_materials
list of Materials
GeoConfiguration()=default
empty constructor for ROOT
const std::string & getName() const
get the name of the detector
double getGlobalHeight() const
get the half height of the global volume, that is length in + and - y direction.
double m_globalHeight
half height of the global volume
std::string m_globalMaterial
material of the global volume
const std::string & getGlobalMaterial() const
get the material of the global volume
double getGlobalLength() const
get the half length of the global volume, that is length in + and - z direction.
std::string m_name
name of the detector configuration
std::vector< GeoComponent > m_components
list of components
GeoConfiguration(const std::string &name, double width, double height, double length, const std::string &material)
Construct new geometry configuration.
Class to represent a material informaion in the Database.
Definition: GeoMaterial.h:22
Abstract base class for different kinds of events.