BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
BDSParser.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 BDSPARSER_H
20#define BDSPARSER_H
21
22#include <string>
23#include <vector>
24
25#include "parser/parser.h"
26
35class BDSParser: private GMAD::Parser
36{
37public:
39 BDSParser() = delete;
41 static BDSParser* Instance(const std::string& filename);
43 static BDSParser* Instance();
45 static bool IsInitialised();
47 virtual ~BDSParser();
48
50 const GMAD::Options& GetOptions() const {return options;}
51
53 const GMAD::OptionsBase* GetOptionsBase() const {return dynamic_cast<const GMAD::OptionsBase*>(&options);}
54
56 const GMAD::Beam& GetBeam() const {return beam;}
57
59 GMAD::Beam& GetBeam() {return beam;}
60
62 const GMAD::BeamBase* GetBeamBase() const {return dynamic_cast<const GMAD::BeamBase*>(&beam);}
63
65 void AmalgamateOptions(const GMAD::Options& optionsIn);
67 void AmalgamateBeam(const GMAD::Beam& beamIn, bool recreate);
69 void CheckOptions();
70
75
78 using GMAD::Parser::GetSamplerFilterIDToSet;
79
81 inline const GMAD::FastList<GMAD::Element>& GetSequence(const std::string& name) {return get_sequence(name);}
82
85 inline const GMAD::Element* GetElement(const std::string& name) {return find_element_safe(name);}
86
88 inline std::vector<GMAD::Atom> GetAtoms() const {return atom_list.getVector();}
89
92 inline const GMAD::Element* GetPlacementElement(const std::string& name) {return find_placement_element_safe(name);}
93
96 inline const std::vector<GMAD::PhysicsBiasing> GetBiasingVector() const {return xsecbias_list.getVector();}
97
99 inline std::vector<GMAD::CavityModel> GetCavityModels() const {return cavitymodel_list.getVector();}
100
102 inline std::vector<GMAD::NewColour> GetColours() const {return colour_list.getVector();}
103
105 inline std::vector<GMAD::Crystal> GetCrystals() const {return crystal_list.getVector();}
106
108 inline std::vector<GMAD::Field> GetFields() const {return field_list.getVector();}
109
111 inline std::vector<GMAD::Material> GetMaterials() const {return material_list.getVector();}
112
114 inline std::vector<GMAD::Placement> GetPlacements() const {return placement_list.getVector();}
115
117 inline std::vector<GMAD::Query> GetQuery() const {return query_list.getVector();}
118
120 inline std::vector<GMAD::Region> GetRegions() const {return region_list.getVector();}
121
123 inline std::vector<GMAD::SamplerPlacement> GetSamplerPlacements() const {return samplerplacement_list.getVector();}
124
126 inline std::vector<GMAD::Scorer> GetScorers() const {return scorer_list.getVector();}
127
129 inline std::vector<GMAD::ScorerMesh> GetScorerMesh() const {return scorermesh_list.getVector();}
130
132 inline std::vector<GMAD::BLMPlacement> GetBLMs() const {return blm_list.getVector();}
133
135 inline std::vector<GMAD::Aperture> GetApertures() const {return aperture_list.getVector();}
136
137protected:
139 explicit BDSParser(const std::string& filename);
140
141private:
144};
145
146#endif
Const entry to parser objects.
Definition: BDSParser.hh:36
const GMAD::Element * GetElement(const std::string &name)
Definition: BDSParser.hh:85
const GMAD::FastList< GMAD::Element > & GetSequence(const std::string &name)
Return sequence.
Definition: BDSParser.hh:81
std::vector< GMAD::Scorer > GetScorers() const
Return scorer list.
Definition: BDSParser.hh:126
void AmalgamateBeam(const GMAD::Beam &beamIn, bool recreate)
Amalgamate the input beam definition with the ones stored in teh parser.
Definition: BDSParser.cc:65
const GMAD::OptionsBase * GetOptionsBase() const
Return bare options base class.
Definition: BDSParser.hh:53
void CheckOptions()
Check options for consistency. This also checks the beam options.
Definition: BDSParser.cc:84
static BDSParser * Instance()
Access method.
Definition: BDSParser.cc:28
std::vector< GMAD::Atom > GetAtoms() const
Return the vector of atom objects.
Definition: BDSParser.hh:88
std::vector< GMAD::Aperture > GetApertures() const
Return aperture list.
Definition: BDSParser.hh:135
std::vector< GMAD::CavityModel > GetCavityModels() const
Return cavity model list.
Definition: BDSParser.hh:99
static BDSParser * instance
Instance.
Definition: BDSParser.hh:143
std::vector< GMAD::Field > GetFields() const
Return the vector of field objects.
Definition: BDSParser.hh:108
const GMAD::Beam & GetBeam() const
Return beam.
Definition: BDSParser.hh:56
static bool IsInitialised()
Returns if parser is initialised.
Definition: BDSParser.cc:49
const GMAD::Options & GetOptions() const
Return options.
Definition: BDSParser.hh:50
BDSParser()=delete
No default constructor.
std::vector< GMAD::Crystal > GetCrystals() const
Return crystal model list.
Definition: BDSParser.hh:105
std::vector< GMAD::Query > GetQuery() const
Query list.
Definition: BDSParser.hh:117
std::vector< GMAD::SamplerPlacement > GetSamplerPlacements() const
Return sampler placement list.
Definition: BDSParser.hh:123
std::vector< GMAD::Region > GetRegions() const
Return region list.
Definition: BDSParser.hh:120
const GMAD::Element * GetPlacementElement(const std::string &name)
Definition: BDSParser.hh:92
std::vector< GMAD::BLMPlacement > GetBLMs() const
Return blm list.
Definition: BDSParser.hh:132
void AmalgamateOptions(const GMAD::Options &optionsIn)
Amalgamate the input options with the ones stored in the parser.
Definition: BDSParser.cc:76
std::vector< GMAD::NewColour > GetColours() const
Return colour model list.
Definition: BDSParser.hh:102
const GMAD::BeamBase * GetBeamBase() const
Return bare beam base class.
Definition: BDSParser.hh:62
std::vector< GMAD::Material > GetMaterials() const
Return material list.
Definition: BDSParser.hh:111
const GMAD::FastList< GMAD::PhysicsBiasing > & GetBiasing() const
Return biasing list.
Definition: BDSParser.hh:95
GMAD::Beam & GetBeam()
Return beam non-const. Required when loading a file and need to change beam parameters to match.
Definition: BDSParser.hh:59
std::vector< GMAD::ScorerMesh > GetScorerMesh() const
Return scorermesh list.
Definition: BDSParser.hh:129
virtual ~BDSParser()
Destructor.
Definition: BDSParser.cc:54
std::vector< GMAD::Placement > GetPlacements() const
Return the vector of placement objects.
Definition: BDSParser.hh:114
Options for a beam distribution.
Definition: beamBase.h:35
Beam class.
Definition: beam.h:44
Basic options class independent of Geant4.
Definition: optionsBase.h:36
Options class.
Definition: options.h:44
Parser class.
Definition: parser.h:78
FastList< Atom > atom_list
List of parser defined atoms.
Definition: parser.h:229
FastList< BLMPlacement > blm_list
List of parser defined blms.
Definition: parser.h:255
FastList< Crystal > crystal_list
Definition: parser.h:231
FastList< Placement > placement_list
List of parser defined placements.
Definition: parser.h:245
FastList< Region > region_list
List of parser defined regions.
Definition: parser.h:239
FastList< NewColour > colour_list
List of parser defined colours.
Definition: parser.h:230
Options options
General options.
Definition: parser.h:225
FastList< Aperture > aperture_list
List of parser defined apertures.
Definition: parser.h:253
FastList< PhysicsBiasing > xsecbias_list
List of parser defined cross section biasing objects.
Definition: parser.h:243
const Element * find_placement_element_safe(const std::string &element_name) const
search placement_element
Definition: parser.cc:609
FastList< SamplerPlacement > samplerplacement_list
List of parser defined sampler placements.
Definition: parser.h:249
const FastList< Element > & get_sequence(const std::string &name)
Definition: parser.cc:458
const FastList< Element > & GetBeamline() const
Definition: parser.cc:896
FastList< Field > field_list
List of parser defined fields.
Definition: parser.h:233
FastList< CavityModel > cavitymodel_list
List of parser defined rf cavity models.
Definition: parser.h:247
FastList< Query > query_list
List of parser defined query objects.
Definition: parser.h:237
Beam beam
Beam instance;.
Definition: parser.h:223
FastList< Material > material_list
List of parser defined materials.
Definition: parser.h:235
const Element * find_element_safe(const std::string &element_name) const
find element by pointer - nullptr if not found - searches element_list
Definition: parser.cc:621
Element class.
Definition: element.h:43