BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
Loading...
Searching...
No Matches
BDSParser.hh
1/*
2Beam Delivery Simulation (BDSIM) Copyright (C) Royal Holloway,
3University of London 2001 - 2023.
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
89 inline const GMAD::Element* GetPlacementElement(const std::string& name) {return find_placement_element_safe(name);}
90
93
94
96 inline std::vector<GMAD::Atom> GetAtoms() const {return atom_list.getVector();}
97 inline const std::vector<GMAD::PhysicsBiasing> GetBiasingVector() const {return xsecbias_list.getVector();}
98 inline std::vector<GMAD::CavityModel> GetCavityModels() const {return cavitymodel_list.getVector();}
99 inline std::vector<GMAD::NewColour> GetColours() const {return colour_list.getVector();}
100 inline std::vector<GMAD::Crystal> GetCrystals() const {return crystal_list.getVector();}
101 inline std::vector<GMAD::Field> GetFields() const {return field_list.getVector();}
102 inline std::vector<GMAD::Material> GetMaterials() const {return material_list.getVector();}
103 inline std::vector<GMAD::Placement> GetPlacements() const {return placement_list.getVector();}
104 inline std::vector<GMAD::Query> GetQuery() const {return query_list.getVector();}
105 inline std::vector<GMAD::Region> GetRegions() const {return region_list.getVector();}
106 inline std::vector<GMAD::SamplerPlacement> GetSamplerPlacements() const {return samplerplacement_list.getVector();}
107 inline std::vector<GMAD::Scorer> GetScorers() const {return scorer_list.getVector();}
108 inline std::vector<GMAD::ScorerMesh> GetScorerMesh() const {return scorermesh_list.getVector();}
109 inline std::vector<GMAD::BLMPlacement> GetBLMs() const {return blm_list.getVector();}
110 inline std::vector<GMAD::Modulator> GetModulators() const {return modulator_list.getVector();}
111 inline std::vector<GMAD::Aperture> GetApertures() const {return aperture_list.getVector();}
113
114protected:
116 explicit BDSParser(const std::string& filename);
117
118private:
121};
122
123#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 the parser list of that object.
Definition: BDSParser.hh:107
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 parser list of that object.
Definition: BDSParser.hh:96
std::vector< GMAD::Aperture > GetApertures() const
Return the parser list of that object.
Definition: BDSParser.hh:111
std::vector< GMAD::CavityModel > GetCavityModels() const
Return the parser list of that object.
Definition: BDSParser.hh:98
static BDSParser * instance
Instance.
Definition: BDSParser.hh:120
std::vector< GMAD::Field > GetFields() const
Return the parser list of that object.
Definition: BDSParser.hh:101
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 the parser list of that object.
Definition: BDSParser.hh:100
std::vector< GMAD::Query > GetQuery() const
Return the parser list of that object.
Definition: BDSParser.hh:104
std::vector< GMAD::SamplerPlacement > GetSamplerPlacements() const
Return the parser list of that object.
Definition: BDSParser.hh:106
std::vector< GMAD::Region > GetRegions() const
Return the parser list of that object.
Definition: BDSParser.hh:105
const GMAD::Element * GetPlacementElement(const std::string &name)
Definition: BDSParser.hh:89
std::vector< GMAD::BLMPlacement > GetBLMs() const
Return the parser list of that object.
Definition: BDSParser.hh:109
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 the parser list of that object.
Definition: BDSParser.hh:99
std::vector< GMAD::Modulator > GetModulators() const
Return the parser list of that object.
Definition: BDSParser.hh:110
const GMAD::BeamBase * GetBeamBase() const
Return bare beam base class.
Definition: BDSParser.hh:62
const std::vector< GMAD::PhysicsBiasing > GetBiasingVector() const
Return the parser list of that object.
Definition: BDSParser.hh:97
std::vector< GMAD::Material > GetMaterials() const
Return the parser list of that object.
Definition: BDSParser.hh:102
const GMAD::FastList< GMAD::PhysicsBiasing > & GetBiasing() const
Return biasing list.
Definition: BDSParser.hh:92
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 the parser list of that object.
Definition: BDSParser.hh:108
virtual ~BDSParser()
Destructor.
Definition: BDSParser.cc:54
std::vector< GMAD::Placement > GetPlacements() const
Return the parser list of that object.
Definition: BDSParser.hh:103
Options for a beam distribution.
Definition: beamBase.h:35
Beam class.
Definition: beam.h:44
List with Efficient Lookup.
Definition: fastlist.h:42
Basic options class independent of Geant4.
Definition: optionsBase.h:36
Options class.
Definition: options.h:44
Parser class.
Definition: parser.h:80
FastList< Atom > atom_list
List of parser defined instances of that object.
Definition: parser.h:233
FastList< BLMPlacement > blm_list
List of parser defined instances of that object.
Definition: parser.h:248
FastList< Crystal > crystal_list
List of parser defined instances of that object.
Definition: parser.h:235
FastList< Placement > placement_list
List of parser defined instances of that object.
Definition: parser.h:242
FastList< Region > region_list
List of parser defined instances of that object.
Definition: parser.h:239
FastList< Modulator > modulator_list
List of parser defined instances of that object.
Definition: parser.h:249
FastList< NewColour > colour_list
List of parser defined instances of that object.
Definition: parser.h:234
FastList< Scorer > scorer_list
List of parser defined instances of that object.
Definition: parser.h:245
Options options
General options.
Definition: parser.h:229
FastList< Aperture > aperture_list
List of parser defined instances of that object.
Definition: parser.h:247
FastList< PhysicsBiasing > xsecbias_list
List of parser defined instances of that object.
Definition: parser.h:241
FastList< ScorerMesh > scorermesh_list
List of parser defined instances of that object.
Definition: parser.h:246
const Element * find_placement_element_safe(const std::string &element_name) const
search placement_element
Definition: parser.cc:611
FastList< SamplerPlacement > samplerplacement_list
List of parser defined instances of that object.
Definition: parser.h:244
const FastList< Element > & get_sequence(const std::string &name)
Definition: parser.cc:461
const FastList< Element > & GetBeamline() const
Definition: parser.cc:903
FastList< Field > field_list
List of parser defined instances of that object.
Definition: parser.h:236
FastList< CavityModel > cavitymodel_list
List of parser defined instances of that object.
Definition: parser.h:243
FastList< Query > query_list
List of parser defined instances of that object.
Definition: parser.h:238
Beam beam
Beam instance;.
Definition: parser.h:227
FastList< Material > material_list
List of parser defined instances of that object.
Definition: parser.h:237
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:623
Element class.
Definition: element.h:43