BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSLine.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 BDSLINE_H
19#define BDSLINE_H
20
21#include "BDSAcceleratorComponent.hh"
22
23#include <iterator>
24#include <set>
25#include <vector>
26
37{
38private:
41 typedef std::vector<BDSAcceleratorComponent*> BDSLineVector;
42
45
46public:
47 explicit BDSLine(G4String name);
48 virtual ~BDSLine(){;}
49
50 BDSLine() = delete;
51
53 BDSLine& operator=(const BDSLine&) = delete;
54 BDSLine(BDSLine&) = delete;
56
59
61 virtual G4double GetArcLength() const;
62 virtual G4double GetChordLength() const;
64
66 virtual std::set<G4LogicalVolume*> GetAcceleratorVacuumLogicalVolumes() const;
67 virtual std::set<G4LogicalVolume*> GetAcceleratorMaterialLogicalVolumes() const;
69
71 typedef BDSLineVector::iterator iterator;
72 typedef BDSLineVector::const_iterator const_iterator;
73 iterator begin() {return line.begin();}
74 iterator end() {return line.end();}
75 const_iterator begin() const {return line.begin();}
76 const_iterator end() const {return line.end();}
77 G4bool empty() const {return line.empty();}
78 const BDSAcceleratorComponent* back() const {return line.back();}
80
82 size_t size() const {return line.size();}
83
85 BDSAcceleratorComponent* const& operator[](G4int index) const {return line.at(index);}
86
89 virtual void Initialise();
90
92 virtual void SetBiasVacuumList(const std::list<std::string>& biasVacuumList);
93 virtual void SetBiasMaterialList(const std::list<std::string>& biasMaterialList);
94 virtual void SetBiasMaterialLVList(const std::list<std::string>& biasMaterialLVList);
96
98 virtual void SetRegion(const G4String& region);
99
100private:
103};
104
105#endif
Abstract class that represents a component of an accelerator.
std::list< std::string > biasVacuumList
Copy of bias list from parser for this particular component.
const G4String name
Const protected member variable that may not be changed by derived classes.
std::list< std::string > biasMaterialLVList
Copy of bias list from parser for this particular component.
G4String region
Protected member variable that can be modified by derived classes.
std::list< std::string > biasMaterialList
Copy of bias list from parser for this particular component.
A class that hold multiple accelerator components.
Definition BDSLine.hh:37
virtual void SetBiasVacuumList(const std::list< std::string > &biasVacuumList)
Copy the bias list to each component.
Definition BDSLine.cc:79
virtual void BuildContainerLogicalVolume()
define pure virtual method
Definition BDSLine.hh:102
BDSLineVector::const_iterator const_iterator
Iterator mechanics.
Definition BDSLine.hh:72
virtual std::set< G4LogicalVolume * > GetAcceleratorVacuumLogicalVolumes() const
Re-implement from BDSAcceleratorComponent.
Definition BDSLine.cc:46
iterator begin()
Iterator mechanics.
Definition BDSLine.hh:73
BDSLine & operator=(const BDSLine &)=delete
Assignment and copy constructor not implemented nor used.
virtual void SetBiasMaterialList(const std::list< std::string > &biasMaterialList)
Copy the bias list to each component.
Definition BDSLine.cc:86
virtual void Initialise()
Definition BDSLine.cc:68
virtual void SetRegion(const G4String &region)
Set the region name for each component.
Definition BDSLine.cc:100
virtual std::set< G4LogicalVolume * > GetAcceleratorMaterialLogicalVolumes() const
Re-implement from BDSAcceleratorComponent.
Definition BDSLine.cc:57
iterator end()
Iterator mechanics.
Definition BDSLine.hh:74
const BDSAcceleratorComponent * back() const
Iterator mechanics.
Definition BDSLine.hh:78
virtual void SetBiasMaterialLVList(const std::list< std::string > &biasMaterialLVList)
Copy the bias list to each component.
Definition BDSLine.cc:93
BDSLineVector line
Member vector to store components.
Definition BDSLine.hh:44
std::vector< BDSAcceleratorComponent * > BDSLineVector
Definition BDSLine.hh:41
BDSAcceleratorComponent *const & operator[](G4int index) const
Accessor for part - exposes functionality of the vector for iteration by index.
Definition BDSLine.hh:85
const_iterator begin() const
Iterator mechanics.
Definition BDSLine.hh:75
void AddComponent(BDSAcceleratorComponent *component)
Add a component to the line.
Definition BDSLine.cc:27
G4bool empty() const
Iterator mechanics.
Definition BDSLine.hh:77
virtual G4double GetArcLength() const
Override base class method as BDSAcceleratorComponent::chordLength etc variables are const and we app...
Definition BDSLine.cc:30
BDSLine(BDSLine &)=delete
Assignment and copy constructor not implemented nor used.
const_iterator end() const
Iterator mechanics.
Definition BDSLine.hh:76
virtual G4double GetChordLength() const
Override base class method as BDSAcceleratorComponent::chordLength etc variables are const and we app...
Definition BDSLine.cc:38
size_t size() const
Size of line.
Definition BDSLine.hh:82
BDSLineVector::iterator iterator
Iterator mechanics.
Definition BDSLine.hh:71