19#include "BDSGasJet.hh"
20#include "BDSBeamPipe.hh"
21#include "BDSBeamPipeFactory.hh"
22#include "BDSBeamPipeInfo.hh"
23#include "BDSColours.hh"
25#include "BDSException.hh"
26#include "BDSGlobalConstants.hh"
27#include "BDSMaterials.hh"
28#include "BDSSDType.hh"
29#include "BDSUtilities.hh"
30#include "BDSWarning.hh"
34#include "G4LogicalVolume.hh"
35#include "G4PVPlacement.hh"
36#include "G4VisAttributes.hh"
42 G4Material* gasMaterialIn,
53 gasMaterial(gasMaterialIn),
68 G4cerr << __METHOD_NAME__ <<
"must provide positive non-zero dimension to gas jet!" << G4endl;
69 G4cerr <<
"x size : " <<
xSize <<
" mm" << G4endl;
75 G4cerr << __METHOD_NAME__ <<
"must provide positive non-zero dimension to gas jet!" << G4endl;
76 G4cerr <<
"y size : " <<
ySize <<
" mm" << G4endl;
82 G4cerr << __METHOD_NAME__ <<
"must provide positive non-zero dimension to gas jet!" << G4endl;
83 G4cerr <<
"z size : " <<
zSize <<
" mm" << G4endl;
133 G4LogicalVolume* gasLV =
new G4LogicalVolume(
gasSolid,
138 G4VisAttributes* gasVisAttr =
new G4VisAttributes(*
BDSColours::Instance()->GetColour(
"capillarygas"));
139 gasLV->SetVisAttributes(gasVisAttr);
147 G4PVPlacement* gasPV =
new G4PVPlacement(Rot,
Abstract class that represents a component of an accelerator.
void SetAcceleratorVacuumLogicalVolume(G4LogicalVolume *accVacLVIn)
const G4String name
Const protected member variable that may not be changed by derived classes.
virtual void SetOutputFaceNormal(const G4ThreeVector &output)
Allow updating of face normals. Virtual so derived class may apply it to daughters.
static G4double lengthSafety
Useful variable often used in construction.
static G4bool checkOverlaps
Useful variable often used in construction.
virtual std::set< G4LogicalVolume * > GetAcceleratorVacuumLogicalVolumes() const
Access the 'vacuum' volume(s) in this component if any. Default is empty set.
virtual void SetInputFaceNormal(const G4ThreeVector &input)
Allow updating of face normals. Virtual so derived class may apply it to daughters.
G4double chordLength
Protected member variable that can be modified by derived classes.
BDSBeamPipeInfo * beamPipeInfo
Optional beam pipe recipe that is written out to the survey if it exists.
The main interface for using the beam pipe factories.
static BDSBeamPipeFactory * Instance()
Singleton accessor.
Holder class for all information required to describe a beam pipe model.
A holder class for a piece of beam pipe geometry.
G4LogicalVolume * GetVacuumLogicalVolume() const
Access the vacuum volume to set fields and limits.
G4ThreeVector InputFaceNormal() const
Accessor.
G4ThreeVector OutputFaceNormal() const
Accessor.
static BDSColours * Instance()
singleton pattern
General exception with possible name of object and message.
G4Material * gasMaterial
Gas material.
BDSGasJet()=delete
Private default constructor to force the use of the supplied one.
G4double ySize
Aperture of main slit in y dimension.
G4double xOffset
Offset of the side slit wrt the main slit in x.
virtual G4String Material() const
Accessor.
G4double xSize
Aperture of main slit in x dimension.
G4double zAngle
Offset of the mask in the pipe in y.
virtual void CheckParameters()
G4VSolid * gasSolid
Geometrical objects:
G4double zSize
Aperture of side slit in x dimension.
G4double yOffset
Offset of the side slit wrt the main slit in y.
G4double xAngle
Aperture of side slit in y dimension.
G4double yAngle
Offset of the mask in the pipe in x.
virtual void BuildContainerLogicalVolume()
G4LogicalVolume * GetContainerLogicalVolume() const
Accessor - see member for more info.
void InheritExtents(BDSGeometryComponent const *const anotherComponent)
Update the extents of this object with those of another object.
void RegisterDaughter(BDSGeometryComponent *anotherComponent)
void RegisterLogicalVolume(G4LogicalVolume *logicalVolume)
void RegisterPhysicalVolume(G4VPhysicalVolume *physicalVolume)
G4VSolid * GetContainerSolid() const
Accessor - see member for more info.
void RegisterVisAttributes(G4VisAttributes *visAttribute)
void RegisterSolid(G4VSolid *solid)
G4bool IsFinite(G4double value, G4double tolerance=std::numeric_limits< double >::epsilon())