Belle II Software development
GeoSTRCreator.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#ifndef GEOSTRCREATOR_H
10#define GEOSTRCREATOR_H
11
12#include <geometry/CreatorBase.h>
13#include <framework/gearbox/GearDir.h>
14#include <framework/logging/Logger.h>
15
16#include <framework/database/DBObjPtr.h>
17#include <framework/database/DBImportObjPtr.h>
18#include <framework/database/IntervalOfValidity.h>
19
20#include <structure/dbobjects/STRGeometryPar.h>
21
22#include <string>
23
24class G4LogicalVolume;
25
26namespace Belle2 {
31
32 namespace structure {
33
35
39
40 public:
41
44
46 virtual ~GeoSTRCreator();
47
49
55 virtual void create(const GearDir& content, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
56 {
57 STRGeometryPar config = createConfiguration(content);
58 createGeometry(config, topVolume, type);
59 }
60
63 virtual void createPayloads(const GearDir& content, const IntervalOfValidity& iov) override
64 {
66 importObj.construct(createConfiguration(content));
67 importObj.import(iov);
68 }
69
71 virtual void createFromDB(const std::string& name, G4LogicalVolume& topVolume, geometry::GeometryTypes type)\
72 override
73 {
75 if (!dbObj) {
76 // Check that we found the object and if not report the problem
77 B2FATAL("No configuration for " << name << " found.");
78 }
79 createGeometry(*dbObj, topVolume, type);
80 }
81
82
83 protected:
84
85 private:
90
91
95 void createGeometry(const STRGeometryPar& parameters, G4LogicalVolume& topVolume,
97
98
102 void readShield(const GearDir& content, STRGeometryPar& parameters, std::string side);
103
104
108 void readPole(const GearDir& content, STRGeometryPar& parameters, std::string side);
109
110
111 };
112 }
114}
115
116#endif /* GEOSTRCREATOR_H */
bool import(const IntervalOfValidity &iov)
Import the object to database.
Class for importing a single object to the database.
void construct(Args &&... params)
Construct an object of type T in this DBImportObjPtr using the provided constructor arguments.
Class for accessing objects in the database.
Definition DBObjPtr.h:21
GearDir is the basic class used for accessing the parameter store.
Definition GearDir.h:31
A class that describes the interval of experiments/runs for which an object in the database is valid.
The Class for STR geometry.
Pure virtual base class for all geometry creators.
Definition CreatorBase.h:28
virtual void createPayloads(const GearDir &content, const IntervalOfValidity &iov) override
Create the configuration objects and save them in the Database.
void createGeometry(const STRGeometryPar &parameters, G4LogicalVolume &topVolume, geometry::GeometryTypes type)
Create the geometry from a parameter object.
STRGeometryPar createConfiguration(const GearDir &param)
Create a parameter object from the Gearbox XML parameters.
void readPole(const GearDir &content, STRGeometryPar &parameters, std::string side)
Read xml files from GearDir for one of the Pole Pieces.
void readShield(const GearDir &content, STRGeometryPar &parameters, std::string side)
Read xml files from GearDir for one of the ECL shields.
virtual void create(const GearDir &content, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Creates the Geant4 objects for the structure geometry from Gearbox.
GeoSTRCreator()
The Constructor of the GeoSTRCreator class.
virtual ~GeoSTRCreator()
The destructor of the GeoSTRCreator class.
virtual void createFromDB(const std::string &name, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Create the geometry from the Database.
GeometryTypes
Flag indicating the type of geometry to be used.
Namespace to encapsulate code needed for simulation and reconstrucion of the structure.
Abstract base class for different kinds of events.