BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
BDSBeamPipeFactory.hh
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) Royal Holloway,
3University of London 2001 - 2022.
4
5This file is part of BDSIM.
6
7BDSIM is free software: you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published
9by the Free Software Foundation version 3 of the License.
10
11BDSIM is distributed in the hope that it will be useful, but
12WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16You should have received a copy of the GNU General Public License
17along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
18*/
19#ifndef BDSBEAMPIPEFACTORY_H
20#define BDSBEAMPIPEFACTORY_H
21
22#include "BDSBeamPipeType.hh"
23
24#include "globals.hh" // geant4 globals / types
25#include "G4ThreeVector.hh"
26
27class G4Material;
28
29class BDSBeamPipe;
30class BDSBeamPipeInfo;
32
45{
46public:
48
50
51 BDSBeamPipe* CreateBeamPipe(const G4String& name,
52 G4double length,
53 BDSBeamPipeInfo* bpi);
54
55 BDSBeamPipe* CreateBeamPipe(BDSBeamPipeType beamPipeTypeIn, // aperture type
56 const G4String& nameIn, // name
57 G4double lengthIn, // length [mm]
58 G4double aper1 = 0, // aperture parameter 1
59 G4double aper2 = 0, // aperture parameter 2
60 G4double aper3 = 0, // aperture parameter 3
61 G4double aper4 = 0, // aperture parameter 4
62 G4Material* vacuumMaterialIn = nullptr,// vacuum material
63 G4double beamPipeThicknessIn = 0, // beampipe thickness [mm]
64 G4Material* beamPipeMaterialIn = nullptr, // beampipe material
65 const G4String& pointsFileIn = "",
66 const G4String& pointsUnitIn = "");
67
68 BDSBeamPipe* CreateBeamPipe(BDSBeamPipeType beamPipeType,
69 const G4String& name,
70 G4double length,
71 const G4ThreeVector& inputFaceNormal,
72 const G4ThreeVector& outputFaceNormal,
73 G4double aper1,
74 G4double aper2,
75 G4double aper3,
76 G4double aper4,
77 G4Material* vacuumMaterial,
78 G4double beamPipeThickness,
79 G4Material* beamPipeMaterial,
80 const G4String& pointsFileIn = "",
81 const G4String& pointsUnitIn = "");
82
83private:
86
89
103};
104
105
106
107#endif
Abstract base class for beampipe factory classes.
The main interface for using the beam pipe factories.
BDSBeamPipeFactoryBase * racetrack
Factory instance.
BDSBeamPipeFactoryBase * elliptical
Factory instance.
static BDSBeamPipeFactory * instance
Singleton instance pointer.
BDSBeamPipeFactoryBase * circularvacuum
Factory instance.
BDSBeamPipeFactoryBase * GetAppropriateFactory(BDSBeamPipeType beamPipeTypeIn)
Return the appropriate factory singleton pointer given a type.
static BDSBeamPipeFactory * Instance()
Singleton accessor.
BDSBeamPipeFactoryBase * rectellipse
Factory instance.
BDSBeamPipeFactoryBase * lhc
Factory instance.
BDSBeamPipeFactoryBase * clicpcl
Factory instance.
BDSBeamPipeFactoryBase * pointsfile
Factory instance.
BDSBeamPipeFactoryBase * lhcdetailed
Factory instance.
BDSBeamPipeFactory()
Private constructor as singleton pattern.
BDSBeamPipeFactoryBase * rectangular
Factory instance.
BDSBeamPipeFactoryBase * octagonal
Factory instance.
BDSBeamPipeFactoryBase * circular
Factory instance.
Holder class for all information required to describe a beam pipe model.
A holder class for a piece of beam pipe geometry.
Definition: BDSBeamPipe.hh:45