 |
Belle II Software
release-05-01-25
|
14 #include <klm/bklm/geometry/GeometryPar.h>
15 #include <klm/dbobjects/bklm/BKLMGeometryPar.h>
18 #include <framework/database/DBImportObjPtr.h>
19 #include <framework/database/DBObjPtr.h>
20 #include <framework/database/IntervalOfValidity.h>
21 #include <framework/logging/Logger.h>
22 #include <geometry/CreatorBase.h>
28 class G4LogicalVolume;
29 class G4VSensitiveDetector;
31 class G4VisAttributes;
83 B2FATAL(
"No configuration for " << name <<
" found.");
97 bklmGeometryPar.
read(param);
98 return bklmGeometryPar;
A class that describes the interval of experiments/runs for which an object in the database is valid.
BKLMGeometryPar createConfiguration(const GearDir ¶m)
Create a parameter object from the Gearbox XML parameters.
void putLayersInSector(G4LogicalVolume *, int, int, bool)
Put the layers into each sector.
G4Polyhedra * m_CapSolid
Pointer to solid for cap.
G4LogicalVolume * m_BracketLogical
Pointer to logical volume for bracket.
G4LogicalVolume * m_SupportLogical[2]
Pointer to logical volumes for support structure [hasChimney].
void read(const GearDir &)
Get geometry parameters from Gearbox.
G4VSolid * m_InnerIronSolid
Pointer to solid for inner iron [hasInnerSupport | hasChimney].
G4LogicalVolume * m_LayerModuleLogical[2 *BKLMElementNumbers::getMaximalLayerNumber()]
Pointers to logical volumes for detector modules in each layer's air gap [hasChimney | layer-1].
G4LogicalVolume * getReadoutContainerLogical(void)
Get pointer to readout-container logical volume.
void putVoidInInnerRegion(G4LogicalVolume *, bool, bool)
Put the air void into the inner-radius region.
void putInnerRegionInSector(G4LogicalVolume *, bool, bool)
Put the inner-radius region into each sector.
void construct(Args &&... params)
Construct an object of type T in this DBImportObjPtr using the provided constructor arguments.
G4Tubs * getSolenoidTube(void)
Get shape corresponding to the solenoid (for subtraction)
GeometryPar * m_GeoPar
Pointer to the BKLM geometry accessor.
bool import(const IntervalOfValidity &iov)
Import the object to database.
virtual void createPayloads(const GearDir &content, const IntervalOfValidity &iov) override
Create the configuration objects and save them in the Database.
void putSectorsInEnd(G4LogicalVolume *, int)
Put each sector into the forward or backward end.
static constexpr int getMaximalSectorNumber()
Get maximal sector number (1-based).
Provides BKLM geometry parameters for simulation, reconstruction etc (from Gearbox or DataBase)
Class for accessing objects in the database.
G4LogicalVolume * m_InnerAirLogical[4]
Pointer to logical volumes for inner air [hasInnerSupport | hasChimney].
void putRPCsInInterior(G4LogicalVolume *, int, bool)
Put the RPCs into each detector module's interior (module is itself in an air gap)
G4VSolid * m_InnerAirSolid
Pointer to solid for inner air.
G4String physicalName(G4LogicalVolume *)
convert G4LogicalVolume's name to corresponding G4PhysicalVolume name
This class creates the BKLM geometry of the Belle II detector.
GeoBKLMCreator()
Constructor of the GeoBKLMCreator class.
double m_SectorDz
Half-length of one sector.
GeoBKLMCreator & operator=(GeoBKLMCreator &)=delete
Assignment operator is disabled.
void createGeometry(const BKLMGeometryPar ¶meters, G4LogicalVolume &topVolume, geometry::GeometryTypes type)
Create the geometry from a parameter object.
G4Tubs * m_SectorTube
Pointer to solid for sector's enclosing tube.
G4Tubs * m_SolenoidTube
Pointer to solid for solenoid.
static constexpr int getMaximalLayerNumber()
Get maximal layer number (1-based).
void putLayer1BracketsInInnerVoid(G4LogicalVolume *, bool)
Put the layer-0 support plate's brackets into the inner region's air void (sectors 1....
void putLayer1SupportInInnerVoid(G4LogicalVolume *, bool)
Put the layer-0 support plate into the inner region's air void (sectors 1..5 only)
Abstract base class for different kinds of events.
G4Polyhedra * m_LayerIronSolid[BKLMElementNumbers::getMaximalLayerNumber()]
Pointers to solids for iron in each layer [layer-1].
G4LogicalVolume * getScintLogical(double, double, double, double)
Get pointer to scintillator logical volume.
double m_SectorDphi
Angular extent of one sector.
GearDir is the basic class used for accessing the parameter store.
Class for importing a single object to the database.
void putScintsInInterior(G4LogicalVolume *, int, int, int, bool)
Put the scintillators into each detector module's interior (module is itself in an air gap)
G4LogicalVolume * m_ReadoutContainerLogical
Pointer to logical volume for scint preamplifier/carrier container.
The Class for BKLM geometry.
void putCapInSector(G4LogicalVolume *, bool)
Put the cap (at maximum |z|) into each sector.
virtual void create(const GearDir &content, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Creates the objects for the BKLM geometry virtual void create(const GearDir&, G4LogicalVolume&,...
G4LogicalVolume * m_SectorLogical[2][BKLMElementNumbers::getMaximalSectorNumber()]
Pointers to logical volumes for each sector [fb-1][sector-1].
G4VSensitiveDetector * m_Sensitive
Pointer to the BKLM SensitiveDetector processor.
void putChimneyInLayer(G4LogicalVolume *, int)
Put the solenoid's cooling chimney into the backward top sector.
std::vector< G4VisAttributes * > m_VisAttributes
Vector of pointers to G4VisAttributes objects.
G4LogicalVolume * m_MPPCHousingLogical
Pointer to logical volume for MPPC housing.
G4LogicalVolume * m_LayerGapLogical[12 *BKLMElementNumbers::getMaximalLayerNumber()]
Pointers to logical volumes for air gap in each layer [side/bottom/top | isFlipped | hasChimney | lay...
Pure virtual base class for all geometry creators.
G4LogicalVolume * m_LayerIronLogical[12 *BKLMElementNumbers::getMaximalLayerNumber()]
Pointers to logical volumes for iron in each layer [side/bottom/top | isFlipped | hasChimney | layer-...
G4Box * m_LayerGapSolid[2 *BKLMElementNumbers::getMaximalLayerNumber()]
Pointers to solids for air gap in each layer [hasChimney | layer-1].
std::vector< G4String * > m_Names
Vector of pointers to G4String objects (volume names)
G4LogicalVolume * getMPPCHousingLogical(void)
Get pointer to MPPC-container logical volume.
G4String logicalName(G4VSolid *)
convert G4VSolid's name to corresponding G4LogicalVolume name
virtual void createFromDB(const std::string &name, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Create the geometry from the Database.
void putEndsInEnvelope(G4LogicalVolume *)
Put the forward and backward ends into the BKLM envelope.
virtual ~GeoBKLMCreator()
Destructor of the GeoBKLMCreator class.
std::vector< G4LogicalVolume * > m_ScintLogicals
Pointers to logical volumes for scintillator strips.
GeometryTypes
Flag indiciating the type of geometry to be used.
G4LogicalVolume * m_CapLogical[2]
Pointer to logical volumes for cap [hasChimney].
double m_RibShift
Radial displacement of polygon to create an azimuthal iron rib.
G4LogicalVolume * m_InnerIronLogical[4]
Pointer to logical volumes for inner iron [hasInnerSupport | hasChimney].
void putModuleInLayer(G4LogicalVolume *, int, int, int, bool, bool, int)
Put the module (and enclosing air gap) into each layer.