Belle II Software  release-05-01-25
GeoHeavyMetalShieldCreator.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Jacek Stypula, Benjamin Schwenker *
7  * *
8  * This software is provided "as is" without any warranty. *
9  **************************************************************************/
10 
11 #ifndef GEOHEAVYMETALSHIELDCREATOR_H
12 #define GEOHEAVYMETALSHIELDCREATOR_H
13 
14 #include <geometry/CreatorBase.h>
15 
16 #include <framework/logging/Logger.h>
17 #include <framework/database/DBObjPtr.h>
18 #include <framework/database/DBImportObjPtr.h>
19 #include <framework/database/IntervalOfValidity.h>
20 
21 #include <vxd/dbobjects/HeavyMetalShieldGeometryPar.h>
22 
23 namespace Belle2 {
30  namespace VXD {
31 
33  class GeoHeavyMetalShieldCreator : public geometry::CreatorBase {
34  private:
36  HeavyMetalShieldGeometryPar createConfiguration(const GearDir& param);
37 
39  void createGeometry(const HeavyMetalShieldGeometryPar& parameters, G4LogicalVolume& topVolume, geometry::GeometryTypes type);
40 
41  public:
44  virtual void create(const GearDir& content, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
45  {
47  createGeometry(config, topVolume, type);
48  }
49 
52  virtual void createPayloads(const GearDir& content, const IntervalOfValidity& iov) override
53  {
55  importObj.construct(createConfiguration(content));
56  importObj.import(iov);
57  }
58 
60  virtual void createFromDB(const std::string& name, G4LogicalVolume& topVolume, geometry::GeometryTypes type) override
61  {
63  if (!dbObj) {
64  // Check that we found the object and if not report the problem
65  B2FATAL("No configuration for " << name << " found.");
66  }
67  createGeometry(*dbObj, topVolume, type);
68  }
69  };
70  }
72 }
73 
74 #endif /* GEOHEAVYMETALSHIELDCREATOR_H */
Belle2::IntervalOfValidity
A class that describes the interval of experiments/runs for which an object in the database is valid.
Definition: IntervalOfValidity.h:35
Belle2::VXD::GeoHeavyMetalShieldCreator::create
virtual void create(const GearDir &content, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
The old create member: create the configuration object(s) on the fly and call the geometry creation r...
Definition: GeoHeavyMetalShieldCreator.h:52
Belle2::DBImportObjPtr::construct
void construct(Args &&... params)
Construct an object of type T in this DBImportObjPtr using the provided constructor arguments.
Definition: DBImportObjPtr.h:57
Belle2::DBImportBase::import
bool import(const IntervalOfValidity &iov)
Import the object to database.
Definition: DBImportBase.cc:38
Belle2::HeavyMetalShieldGeometryPar
The Class for VXD Heavy Metal Shield.
Definition: HeavyMetalShieldGeometryPar.h:35
Belle2::VXD::GeoHeavyMetalShieldCreator::createPayloads
virtual void createPayloads(const GearDir &content, const IntervalOfValidity &iov) override
Create the configuration objects and save them in the Database.
Definition: GeoHeavyMetalShieldCreator.h:60
Belle2::DBObjPtr
Class for accessing objects in the database.
Definition: DBObjPtr.h:31
Belle2::VXD::GeoHeavyMetalShieldCreator::createFromDB
virtual void createFromDB(const std::string &name, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Create the geometry from the Database.
Definition: GeoHeavyMetalShieldCreator.h:68
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::GearDir
GearDir is the basic class used for accessing the parameter store.
Definition: GearDir.h:41
Belle2::DBImportObjPtr
Class for importing a single object to the database.
Definition: DBImportObjPtr.h:33
Belle2::VXD::GeoHeavyMetalShieldCreator::createConfiguration
HeavyMetalShieldGeometryPar createConfiguration(const GearDir &param)
Create a parameter object from the Gearbox XML parameters.
Definition: GeoHeavyMetalShieldCreator.cc:51
Belle2::geometry::GeometryTypes
GeometryTypes
Flag indiciating the type of geometry to be used.
Definition: GeometryManager.h:39
Belle2::VXD::GeoHeavyMetalShieldCreator::createGeometry
void createGeometry(const HeavyMetalShieldGeometryPar &parameters, G4LogicalVolume &topVolume, geometry::GeometryTypes type)
Create the geometry from a parameter object.
Definition: GeoHeavyMetalShieldCreator.cc:81