10#define GEOVXDCREATOR_H
12#include <vxd/geometry/GeoVXDComponents.h>
13#include <vxd/geometry/GeoVXDAssembly.h>
14#include <vxd/geometry/SensorInfoBase.h>
15#include <vxd/geometry/GeoVXDRadiationSensors.h>
16#include <vxd/simulation/SensitiveDetectorBase.h>
17#include <geometry/CreatorBase.h>
18#include <framework/gearbox/GearDir.h>
19#include <framework/logging/Logger.h>
25#include <framework/database/DBObjPtr.h>
26#include <framework/database/DBImportObjPtr.h>
27#include <framework/database/IntervalOfValidity.h>
28#include <vxd/dbobjects/VXDGeometryPar.h>
31#include <G4Transform3D.hh>
32#include <G4Polycone.hh>
34class G4AssemblyVolume;
81 G4Transform3D
placeLadder(
int ladderID,
double phi, G4LogicalVolume* volume,
const G4Transform3D& placement,
120 std::vector<VXDGeoPlacement> placements,
121 bool originCenter =
true,
bool allowOutside =
false);
138 width2,
double length,
double& height,
double angle = 0);
GearDir is the basic class used for accessing the parameter store.
class to create the diamond radiation sensor geometry if defined
static const double um
[micrometers]
The Class for VXD Alignment payload.
Class holding all parameters for an VXD geometry component.
Struct containing all parameters of one ladder.
Class holding all parameters to place a VXD geometry subcomponent.
The Class for VXD Radiation Sensor parameters.
The Class for VXD Sensor payload.
Struct holding the information where a sensor should be placed inside the ladder.
Struct holding all parameters for a completeVXD Sensor.
The Class for VXD geometry.
Class to group some Geant4 volumes and place them all at once with a given transformation matrix.
The creator for the VXD geometry of the Belle II detector.
std::map< std::string, VXDGeoSensor > m_sensorMap
Map containing Information about all defined sensor types.
float m_minimumElectrons
minimum number of electrons to be deposited by a particle to be saved
G4VSolid * createTrapezoidal(const std::string &name, double width, double width2, double length, double &height, double angle=0)
Create a trapezoidal solid.
virtual void readLadderComponents(int layerID, int ladderID, GearDir content, VXDGeometryPar &vxdGeometryPar)
Read parameters for ladder components and their alignment corresponding to the given ladder id.
void createDiamonds(const VXDGeoRadiationSensorsPar ¶ms, G4LogicalVolume &topVolume, G4LogicalVolume &envelopeVolume)
Create diamond radiation sensors.
GearDir m_components
GearDir pointing to the toplevel of the components.
GeoVXDRadiationSensors m_radiationsensors
Diamond radiation sensor "sub creator".
std::vector< Simulation::SensitiveDetectorBase * > m_sensitive
List to all created sensitive detector instances.
std::string m_prefix
Prefix to prepend to all volume names.
bool m_onlyActiveMaterial
If this is true, only active Materials will be placed for tracking studies.
double m_activeStepSize
Stepsize to be used inside active volumes.
float m_distanceTolerance
tolerance for Geant4 steps to be merged to a single step
virtual void readLadder(int layer, GearDir components, VXDGeometryPar &geoparameters)
Read parameters for a ladder in layer with given ID from gearbox and layer store them in payload.
VXDGeoLadder m_ladder
Parameters of the currently active ladder.
std::map< std::string, Belle2::VxdID > m_halfShellVxdIDs
Used for translation of half-shell name into a VxdID to consitently handle it in hierarchy.
bool m_onlyPrimaryTrueHits
If true only create TrueHits from primary particles and ignore secondaries.
G4Transform3D getPosition(const VXDGeoComponent &mother, const VXDGeoComponent &daughter, const VXDGeoPlacement &placement, bool originCenter)
Return the position where a daughter component is to be placed.
float m_electronTolerance
tolerance for the energy deposition in electrons to be merged in a single step
std::vector< G4UserLimits * > m_UserLimits
Vector of G4UserLimit pointers.
G4Transform3D getAlignment(const VXDAlignmentPar ¶ms)
Get Alignment from paylead object.
void readComponent(const std::string &name, GearDir components, VXDGeometryPar &vxdGeometryPar)
Read parameters for component name from Gearbox into geometry payload.
virtual ~GeoVXDCreator()
The destructor of the GeoVXDCreator class.
GeoVXDAssembly createSubComponents(const std::string &name, VXDGeoComponent &component, std::vector< VXDGeoPlacement > placements, bool originCenter=true, bool allowOutside=false)
Place a list of subcomponents into an component.
void readSubComponents(const std::vector< VXDGeoPlacementPar > &placements, const GearDir &componentsDir, VXDGeometryPar &vxdGeometryPar)
Read parameters for all components in placement container from Gearbox into payload.
std::map< std::string, VXDGeoComponent > m_componentCache
Cache of all previously created components.
G4Transform3D placeLadder(int ladderID, double phi, G4LogicalVolume *volume, const G4Transform3D &placement, const VXDGeometryPar ¶meters)
Place ladder corresponding to the given ladder id into volume setLayer has to be called first to set ...
virtual SensorInfoBase * createSensorInfo(const VXDGeoSensorPar &sensor)=0
Read the sensor definitions from the database.
virtual void setCurrentLayer(int layer, const VXDGeometryPar ¶meters)
Read parameters for given layer and store in m_ladder.
std::vector< VXDGeoPlacementPar > getSubComponents(const GearDir &path)
Return vector of VXDGeoPlacements with all the components defined inside a given path.
virtual SensitiveDetectorBase * createSensitiveDetector(VxdID sensorID, const VXDGeoSensor &sensor, const VXDGeoSensorPlacement &placement)=0
Return a SensitiveDetector implementation for a given sensor.
bool m_seeNeutrons
Make sensitive detectors also see neutrons.
std::string m_defaultMaterial
Name of the Material to be used for Air.
bool m_activeChips
Make also chips sensitive.
std::string m_currentHalfShell
Current half-shell being processed (need to know ladder parent for hierarchy)
GearDir m_alignment
GearDir pointing to the alignment parameters.
Base class for Sensitive Detector implementation of PXD and SVD.
Base class to provide Sensor Information for PXD and SVD.
Class to uniquely identify a any structure of the PXD and SVD.
Pure virtual base class for all geometry creators.
Abstract base class for different kinds of events.