12#include <klm/eklm/geometry/GeometryData.h>
13#include <klm/eklm/geometry/TransformData.h>
14#include <klm/simulation/SensitiveDetector.h>
17#include <framework/gearbox/GearDir.h>
18#include <geometry/CreatorBase.h>
25#include <G4LogicalVolume.hh>
26#include <G4Material.hh>
27#include <G4SubtractionSolid.hh>
28#include <G4Transform3D.hh>
225 void create(
const GearDir& content, G4LogicalVolume& topVolume,
234 void createFromDB(
const std::string& name, G4LogicalVolume& topVolume,
368 const char* name, G4VSolid* solid, G4Box* subtractionBox,
369 const HepGeom::Transform3D& transf,
bool largerAngles,
370 double x1,
double y1,
double x2,
double y2);
384 const char* name, G4VSolid* solid, G4Box* subtractionBox,
385 const HepGeom::Transform3D& transf,
bool largerAngles,
386 double x,
double y,
double ang);
408 G4VSolid*
unifySolids(G4VSolid** solids, HepGeom::Transform3D* transf,
409 int nSolids,
const std::string& name);
485 G4LogicalVolume*
createSection(G4LogicalVolume* topVolume)
const;
492 G4LogicalVolume*
createLayer(G4LogicalVolume* section)
const;
499 G4LogicalVolume*
createSector(G4LogicalVolume* layer)
const;
543 G4LogicalVolume*
createPlane(G4LogicalVolume* sector)
const;
551 G4LogicalVolume* plane)
const;
626 void create(G4LogicalVolume& topVolume);
GeoEKLMCreator()
Constructor.
G4Box * createSectorSupportBoxY(G4Transform3D &t)
Create Y side of sector support structure.
struct Solids m_Solids
Solids.
void readXMLDataStrips()
Read strip parameters from XML database.
void createShieldDetailDLogicalVolume()
Create shield detail D logical volume.
void createShieldDetailALogicalVolume()
Create shield detail A logical volume.
double getSectorSupportCornerAngle()
Get cutted corner angle.
void createShieldDetailCLogicalVolume()
Create shield detail C logical volume.
void createSegment(G4LogicalVolume *plane) const
Create segment (strips + plastic sheets).
void createMaterials()
Creation of materials.
G4Tubs * createSectorSupportOuterTube()
Create outer tube of sector support structure.
struct LogicalVolumes m_LogVol
Logical volumes.
TransformData * m_TransformData
Transformation data.
struct VolumeNumbers m_CurVol
Current volumes.
void createSectorSupportCorner4(G4LogicalVolume *sector) const
Create sector support corner 4.
struct Materials m_Materials
Materials.
void createShieldDetailBLogicalVolume()
Create shield detail B logical volume.
void createScintillator(int iStrip) const
Create scintillator.
G4LogicalVolume * createSection(G4LogicalVolume *topVolume) const
Create section.
void createSectorSupportCorner1LogicalVolume()
Create sector support corner 1 logical volume.
void createFromDB(const std::string &name, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Creation of the detector geometry from database.
KLM::SensitiveDetector * m_Sensitive
Sensitive detector.
G4LogicalVolume * createSector(G4LogicalVolume *layer) const
Create sector.
void createPlaneSolid(int n)
Create plane solid.
G4SubtractionSolid * cutSolidCorner(const char *name, G4VSolid *solid, G4Box *subtractionBox, const HepGeom::Transform3D &transf, bool largerAngles, double x1, double y1, double x2, double y2)
Cut corner of a solid.
void createSectorSupportCorner2LogicalVolume()
Create sector support corner 2 logical volume.
void newVolumes()
Create new volumes.
void createSubtractionBoxSolid()
Create subtraction box solid.
G4Box * createSectorSupportBoxTop(G4Transform3D &t)
Create box in the cutted corner of sector support structure.
void newSensitive()
Create new sensitive detectors.
void createSectorSupportCorner1(G4LogicalVolume *sector) const
Create sector support corner 1.
void createSectorSupportCorner3(G4LogicalVolume *sector) const
Create sector support corner 3.
void deleteSensitive()
Delete sensitive detectors.
G4LogicalVolume * createLayerLogicalVolume(const char *name) const
Create layer logical volume.
void createPayloads(const GearDir &content, const IntervalOfValidity &iov) override
Creation of payloads.
void createSectorCover(int iCover, G4LogicalVolume *sector) const
Create sector cover.
void createStripSegment(int iSegment) const
Create strip segment.
G4LogicalVolume * createPlane(G4LogicalVolume *sector) const
Create plane.
void createScintillatorLogicalVolume(int iStrip)
Create scintillator logical volume.
void createSegmentSupportLogicalVolume(int iPlane, int iSegmentSupport)
Create segment support logical volume.
void createShield(G4LogicalVolume *sector) const
Create shield.
void createPlasticSheet(int iSheetPlane, int iSheet) const
Create plastic sheet.
const EKLMElementNumbers * m_ElementNumbers
Element numbers.
void createSectorSupportCorner4LogicalVolume()
Create sector support corner 4 logical volume.
void createSegmentLogicalVolume(int iSegment)
Create segment logical volume (strips + plastic sheets).
void createSolids()
Create solids (or logical volumes which must be created only once).
void createPlasticSheetLogicalVolume(int iSegment)
Create plastic sheet logical volume.
void createSectorSupportLogicalVolume()
Create sector support logical volume.
void createLayerSolid()
Create layer solid.
G4Box * createSectorSupportBoxX(G4Transform3D &t)
Create X side of sector support structure.
void createSectorCoverLogicalVolume()
Create sector cover solid.
void createSectorSupportCorner2(G4LogicalVolume *sector) const
Create sector support corner 2.
void createStripGrooveLogicalVolume(int iStrip)
Create strip groove logical volume.
bool detectorLayer(int section, int layer) const
Check if a given layer is a detector layer.
void createStripGroove(int iStrip) const
Create strip groove.
void createSectorSupportCorner3LogicalVolume()
Create sector support corner 3 logical volume.
G4LogicalVolume * createLayer(G4LogicalVolume *section) const
Create layer.
G4VSolid * unifySolids(G4VSolid **solids, HepGeom::Transform3D *transf, int nSolids, const std::string &name)
Unify a group of solids.
void createSectionSolid()
Create section solid.
G4LogicalVolume * createSectorLogicalVolume(const char *name) const
Create sector logical volume.
void createStrip(G4LogicalVolume *segment) const
Create strip.
void createSectorSolid()
Create sector solid.
void createStripLogicalVolume(int iStrip)
Create strip logical volume.
void deleteVolumes()
Delete volumes.
void create(const GearDir &content, G4LogicalVolume &topVolume, geometry::GeometryTypes type) override
Creation of the detector geometry from Gearbox (XML).
void createSectorSupport(G4LogicalVolume *sector) const
Create sector support structure (main part without corners).
const GeometryData * m_GeoDat
Geometry data.
void createStripSegmentLogicalVolume(int iSegment)
Create strip segment logical volume.
void createSegmentSupport(int iSegmentSupport, G4LogicalVolume *plane) const
Create segment support.
G4Tubs * createSectorSupportInnerTube()
Create inner tube of sector support structure.
~GeoEKLMCreator()
Destructor.
GearDir is the basic class used for accessing the parameter store.
A class that describes the interval of experiments/runs for which an object in the database is valid.
KLM sensitive-detector class.
Pure virtual base class for all geometry creators.
GeometryTypes
Flag indiciating the type of geometry to be used.
Abstract base class for different kinds of events.
G4LogicalVolume ** strip
Strips.
G4LogicalVolume ** scint
Scintillator.
G4LogicalVolume ** groove
Strip grooves.
G4LogicalVolume ** stripSegment
Strip segments.
struct ShieldLogicalVolumes shield
Shield.
G4LogicalVolume *** segmentsup
Segment support.
G4LogicalVolume ** psheet
Plastic sheet.
G4LogicalVolume ** segment
Segments.
G4LogicalVolume * cover
Sector cover.
struct SectorSupportLogicalVolumes sectorsup
Sector support.
G4Material * silicon
Silicon.
G4Material * duralumin
Duralumin.
G4Material * polystyrene
Polystyrene.
G4Material * polyethylene
Polyethylene.
G4Material * polystyrol
Polystyrol.
Sector support logical volumes.
G4LogicalVolume * corn4
Corner 4.
G4LogicalVolume * corn3
Corner 3.
G4LogicalVolume * corn2
Corner 2.
G4LogicalVolume * corn1
Corner 1.
G4LogicalVolume * supp
Support.
G4VSolid * otube
Outer tube.
G4VSolid * itube
Inner tube.
G4LogicalVolume * detailC
Detail C.
G4LogicalVolume * detailD
Detail D.
G4LogicalVolume * detailA
Detail A.
G4LogicalVolume * detailB
Detail B.
G4VSolid * section
Section.
G4VSolid * secsupp
Sector support.
G4VSolid ** groove
Strip grooves.
G4VSolid ** stripSegment
Strip segment.
G4VSolid ** plasticSheetElement
Plastic sheet element.
G4VSolid ** psheet
Plastic sheets (combined).
G4Box * subtractionBox
Box used for subtractions.
struct SectorSupportSolids sectorsup
Sector support.