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) 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 BDSPARSER_H
19#define BDSPARSER_H
20
21#include <map>
22#include <string>
23#include <vector>
24
25#include "parser/parser.h"
26
36{
37public:
39 BDSParser();
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::CoolingChannel> GetCoolingChannels() const {return coolingchannel_list.getVector();}
102 inline std::map<std::string, GMAD::CoolingChannel> GetCoolingChannelMap() const {return coolingchannel_list.getMap();}
103 inline std::vector<GMAD::Field> GetFields() const {return field_list.getVector();}
104 inline std::vector<GMAD::Laser>GetLasers() const {return laser_list.getVector();}
105 inline std::vector<GMAD::Material> GetMaterials() const {return material_list.getVector();}
106 inline std::vector<GMAD::Placement> GetPlacements() const {return placement_list.getVector();}
107 inline std::vector<GMAD::Query> GetQueries() const {return query_list.getVector();}
108 inline std::vector<GMAD::Region> GetRegions() const {return region_list.getVector();}
109 inline std::vector<GMAD::SamplerPlacement> GetSamplerPlacements() const {return samplerplacement_list.getVector();}
110 inline std::vector<GMAD::Scorer> GetScorers() const {return scorer_list.getVector();}
111 inline std::vector<GMAD::ScorerMesh> GetScorerMeshes() const {return scorermesh_list.getVector();}
112 inline std::vector<GMAD::BLMPlacement> GetBLMs() const {return blm_list.getVector();}
113 inline std::vector<GMAD::Modulator> GetModulators() const {return modulator_list.getVector();}
114 inline std::vector<GMAD::Aperture> GetApertures() const {return aperture_list.getVector();}
115 inline std::vector<GMAD::Tunnel> GetTunnels() const {return tunnel_list.getVector();}
116
118
120 GMAD::CoolingChannel GetCoolingChannel(const std::string& objectName);
121
122
123protected:
125 explicit BDSParser(const std::string& filename);
126
127private:
130};
131
132#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
BDSParser()
Default constructor.
Definition BDSParser.cc:68
std::vector< GMAD::Scorer > GetScorers() const
Return the parser list of that object.
Definition BDSParser.hh:110
std::vector< GMAD::ScorerMesh > GetScorerMeshes() const
Return the parser list of that object.
Definition BDSParser.hh:111
void AmalgamateBeam(const GMAD::Beam &beamIn, bool recreate)
Amalgamate the input beam definition with the ones stored in teh parser.
Definition BDSParser.cc:74
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:93
static BDSParser * Instance()
Access method.
Definition BDSParser.cc:29
std::vector< GMAD::Atom > GetAtoms() const
Return the parser list of that object.
Definition BDSParser.hh:96
std::vector< GMAD::Query > GetQueries() const
Return the parser list of that object.
Definition BDSParser.hh:107
std::vector< GMAD::Aperture > GetApertures() const
Return the parser list of that object.
Definition BDSParser.hh:114
std::vector< GMAD::CavityModel > GetCavityModels() const
Return the parser list of that object.
Definition BDSParser.hh:98
static BDSParser * instance
Instance.
Definition BDSParser.hh:129
std::vector< GMAD::Field > GetFields() const
Return the parser list of that object.
Definition BDSParser.hh:103
const GMAD::Beam & GetBeam() const
Return beam.
Definition BDSParser.hh:56
std::map< std::string, GMAD::CoolingChannel > GetCoolingChannelMap() const
Return the parser list of that object.
Definition BDSParser.hh:102
GMAD::CoolingChannel GetCoolingChannel(const std::string &objectName)
Return a cooling channel object by name. Throws an exception if it doesn't exist.
Definition BDSParser.cc:117
std::vector< GMAD::CoolingChannel > GetCoolingChannels() const
Return the parser list of that object.
Definition BDSParser.hh:101
static bool IsInitialised()
Returns if parser is initialised.
Definition BDSParser.cc:50
const GMAD::Options & GetOptions() const
Return options.
Definition BDSParser.hh:50
std::vector< GMAD::Crystal > GetCrystals() const
Return the parser list of that object.
Definition BDSParser.hh:100
std::vector< GMAD::SamplerPlacement > GetSamplerPlacements() const
Return the parser list of that object.
Definition BDSParser.hh:109
std::vector< GMAD::Region > GetRegions() const
Return the parser list of that object.
Definition BDSParser.hh:108
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:112
void AmalgamateOptions(const GMAD::Options &optionsIn)
Amalgamate the input options with the ones stored in the parser.
Definition BDSParser.cc:85
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:113
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:105
const GMAD::FastList< GMAD::PhysicsBiasing > & GetBiasing() const
Return biasing list.
Definition BDSParser.hh:92
std::vector< GMAD::Laser > GetLasers() const
Return the parser list of that object.
Definition BDSParser.hh:104
std::vector< GMAD::Tunnel > GetTunnels() const
Return the parser list of that object.
Definition BDSParser.hh:115
GMAD::Beam & GetBeam()
Return beam non-const. Required when loading a file and need to change beam parameters to match.
Definition BDSParser.hh:59
virtual ~BDSParser()
Destructor.
Definition BDSParser.cc:55
std::vector< GMAD::Placement > GetPlacements() const
Return the parser list of that object.
Definition BDSParser.hh:106
Options for a beam distribution.
Definition beamBase.h:34
Beam class.
Definition beam.h:43
Cooling channel parameters.
List with Efficient Lookup.
Definition fastlist.h:41
Basic options class independent of Geant4.
Definition optionsBase.h:35
Options class.
Definition options.h:43
Parser class.
Definition parser.h:81
FastList< Atom > atom_list
List of parser defined instances of that object.
Definition parser.h:241
FastList< BLMPlacement > blm_list
List of parser defined instances of that object.
Definition parser.h:258
FastList< Crystal > crystal_list
List of parser defined instances of that object.
Definition parser.h:243
FastList< Placement > placement_list
List of parser defined instances of that object.
Definition parser.h:251
FastList< Region > region_list
List of parser defined instances of that object.
Definition parser.h:248
FastList< Modulator > modulator_list
List of parser defined instances of that object.
Definition parser.h:259
FastList< NewColour > colour_list
List of parser defined instances of that object.
Definition parser.h:242
FastList< Scorer > scorer_list
List of parser defined instances of that object.
Definition parser.h:255
FastList< Tunnel > tunnel_list
List of parser defined instances of that object.
Definition parser.h:249
Options options
General options.
Definition parser.h:237
FastList< Aperture > aperture_list
List of parser defined instances of that object.
Definition parser.h:257
FastList< CoolingChannel > coolingchannel_list
List of parser defined instances of that object.
Definition parser.h:244
FastList< PhysicsBiasing > xsecbias_list
List of parser defined instances of that object.
Definition parser.h:250
FastList< ScorerMesh > scorermesh_list
List of parser defined instances of that object.
Definition parser.h:256
const Element * find_placement_element_safe(const std::string &element_name) const
search placement_element
Definition parser.cc:723
const FastList< Element > & get_sequence(const std::string &name, bool bExit=true)
Definition parser.cc:530
FastList< SamplerPlacement > samplerplacement_list
List of parser defined instances of that object.
Definition parser.h:254
const FastList< Element > & GetBeamline() const
Definition parser.cc:1073
FastList< Field > field_list
List of parser defined instances of that object.
Definition parser.h:245
FastList< CavityModel > cavitymodel_list
List of parser defined instances of that object.
Definition parser.h:253
FastList< Query > query_list
List of parser defined instances of that object.
Definition parser.h:247
FastList< Laser > laser_list
List of parser defined instances of that object.
Definition parser.h:252
Beam beam
Beam instance;.
Definition parser.h:235
FastList< Material > material_list
List of parser defined instances of that object.
Definition parser.h:246
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:737
Element class.
Definition element.h:47