BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSBeamPipeFactory.hh
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) BDSIM Collaboration, 2001 - 2026.
3
4This file is part of BDSIM.
5
6BDSIM is free software: you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published
8by the Free Software Foundation version 3 of the License.
9
10BDSIM is distributed in the hope that it will be useful, but
11WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with BDSIM. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef BDSBEAMPIPEFACTORY_H
19#define BDSBEAMPIPEFACTORY_H
20
21#include "BDSBeamPipeType.hh"
22
23#include "globals.hh" // geant4 globals / types
24#include "G4ThreeVector.hh"
25
26class G4Material;
27
28class BDSBeamPipe;
29class BDSBeamPipeInfo;
31
44{
45public:
47
49
50 BDSBeamPipe* CreateBeamPipe(const G4String& name,
51 G4double length,
52 BDSBeamPipeInfo* bpi);
53
58 G4double length,
59 BDSBeamPipeInfo* info);
60
61 BDSBeamPipe* CreateBeamPipe(BDSBeamPipeType beamPipeTypeIn, // aperture type
62 const G4String& nameIn, // name
63 G4double lengthIn, // length [mm]
64 G4double aper1 = 0, // aperture parameter 1
65 G4double aper2 = 0, // aperture parameter 2
66 G4double aper3 = 0, // aperture parameter 3
67 G4double aper4 = 0, // aperture parameter 4
68 G4Material* vacuumMaterialIn = nullptr,// vacuum material
69 G4double beamPipeThicknessIn = 0, // beampipe thickness [mm]
70 G4Material* beamPipeMaterialIn = nullptr, // beampipe material
71 const G4String& pointsFileIn = "",
72 const G4String& pointsUnitIn = "");
73
74 BDSBeamPipe* CreateBeamPipe(BDSBeamPipeType beamPipeType,
75 const G4String& name,
76 G4double length,
77 const G4ThreeVector& inputFaceNormal,
78 const G4ThreeVector& outputFaceNormal,
79 G4double aper1,
80 G4double aper2,
81 G4double aper3,
82 G4double aper4,
83 G4Material* vacuumMaterial,
84 G4double beamPipeThickness,
85 G4Material* beamPipeMaterial,
86 const G4String& pointsFileIn = "",
87 const G4String& pointsUnitIn = "");
88
89private:
92
95
110};
111
112
113
114#endif
Abstract base class for beampipe factory classes.
The main interface for using the beam pipe factories.
BDSBeamPipeFactoryBase * racetrack
Factory instance.
BDSBeamPipeFactoryBase * rhombus
Factory instance.
BDSBeamPipeFactoryBase * elliptical
Factory instance.
static BDSBeamPipeFactory * instance
Singleton instance pointer.
BDSBeamPipe * CreateBeamPipeForVacuumIntersection(const G4String &name, G4double length, BDSBeamPipeInfo *info)
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.