19#ifndef BDSCAVITYFACTORYBASE_H
20#define BDSCAVITYFACTORYBASE_H
22#include "BDSFactoryBase.hh"
23#include "BDSSDType.hh"
27#include "G4RotationMatrix.hh"
40class G4VPhysicalVolume;
57 G4double totalChordLength,
59 G4Material* vacuumMaterial);
72 G4double totalChordLength,
78 G4Material* vacuumMaterial);
Abstract base class for rf cavity geometry factories.
G4bool sensitiveBeamPipe
Whether the beam pipe will record energy deposition.
G4bool sensitiveVacuum
Whether the vacuum will record energy deposition.
virtual BDSCavity * BuildCavityAndRegisterObjects(const BDSExtent &extent)
Construct output object and register all temporary objects from vectors.
G4LogicalVolume * vacuumLV
Cache of particular solid or lv for common functionality in this class.
virtual void SetUserLimits(G4double length)
G4LogicalVolume * containerLV
Cache of particular solid or lv for common functionality in this class.
void CleanUpBase()
Non-virtual clean up that can be used in the constructor safely.
G4LogicalVolume * cavityLV
Cache of particular solid or lv for common functionality in this class.
virtual G4double CreateSolids(G4String name, G4double totalChordLength, const BDSCavityInfo *info)=0
Create vacuumSolid and cavitySolid. Must return the container radius.
G4Material * emptyMaterial
Cache of variable from BDSGlobalConstants.
std::map< G4LogicalVolume *, BDSSDType > sensitiveVolumes
Map to sensitivity for volumes.
virtual void SetVisAttributes(G4String colourName="rfcavity")
Set vis attributes for cavityLV, vacuumLV and containerLV.
G4VSolid * vacuumSolid
Cache of particular solid or lv for common functionality in this class.
virtual void CleanUp()
Ensure all internal members are reset before reuse. Calls CleanUpBase.
G4VSolid * containerSolid
Cache of particular solid or lv for common functionality in this class.
BDSCavity * CreateCavity(G4String name, G4double totalChordLength, const BDSCavityInfo *info, G4Material *vacuumMaterial)
G4VSolid * cavitySolid
Cache of particular solid or lv for common functionality in this class.
virtual void PlaceComponents(G4String name)
Place the vacuum and cavity centrally in the container logical volume.
virtual void CreateLogicalVolumes(G4String name, const BDSCavityInfo *info, G4Material *vacuumMaterial)
Create vacuumLV, cavityLV and containerLV.
Holder for all Geometrical information required to create an RF cavity.
A holder class for an RF cavity piece of geometry.
Holder for +- extents in 3 dimensions.
Common temporary storage for all factories no matter what geometry.