31#include "blmplacement.h"
32#include "cavitymodel.h"
36#include "elementtype.h"
41#include "parameters.h"
42#include "physicsbiasing.h"
47#include "scorermesh.h"
48#include "samplerplacement.h"
53int yyerror(
const char *);
91 explicit Parser(std::string filename);
109 const std::string& name,
110 std::string start =
"",
111 std::string end =
"");
114 void expand_line(
const std::string& name, std::string start, std::string end);
124 void add_sampler(
const std::string& name,
int count,
ElementType type, std::string samplerType, std::list<int>* samplerPartIDListIn =
nullptr);
126 template <
class C,
class Container=FastList<C>>
128 template <
class C,
class Container=FastList<C>>
129 void Add(
bool unique,
const std::string& className);
134 template <
class C,
class Container=FastList<C>>
137 const std::set<std::set<int>>& GetSamplerFilters()
const {
return samplerFilters;}
138 const std::map<int, std::set<int>>& GetSamplerFilterIDToSet()
const {
return samplerFilterIDToSet;}
143 const Element&
find_element(
const std::string& element_name)
const;
149 double property_lookup(
const std::string& element_name,
const std::string& property_name)
const;
155 bool InvalidSymbolName(
const std::string& s, std::string& errorReason);
157 Symtab *
symcreate(
const std::string& s);
159 Symtab *
symlook(
const std::string& s);
162 void Store(
double value);
163 void Store(
const std::string& name);
172 template <
class C,
typename T>
173 void SetValue(std::string property, T value);
176 double GetValue(std::string property);
179 std::list<T>* ArrayToList(Array*);
182 template <
typename T>
186 void Overwrite(
const std::string& objectName);
210 const std::string& samplerType,
211 double samplerRadius=0,
212 int particleSetID = -1);
214 void add_func(std::string name,
double (*func)(
double));
215 void add_var(std::string name,
double value,
int is_reserved = 0);
343 std::map<int, std::set<int>> samplerFilterIDToSet;
344 std::map<std::set<int>,
int> setToSamplerFilterID;
347 template <
class C,
typename T>
350 GetGlobal<C>().set_value(property, value);
356 return GetGlobal<C>().get_value(property);
360 std::list<T>* Parser::ArrayToList(
Array* arrayIn)
366 std::list<T>* result =
new std::list<T>();
367 const auto& doubleData = arrayIn->GetDataList();
368 for (
auto& value : doubleData)
369 {result->push_back((T)value);}
Representation of arrays used in tokens.
RF CavityModel class for parser.
Crystal class for parser.
List with Efficient Lookup.
Colour definition for parser.
void Overwrite(const std::string &objectName)
Overwrite object with current values.
FastList< Atom > atom_list
List of parser defined atoms.
void Add()
Insert global object of parser class C in Container class.
std::vector< std::list< Element > * > allocated_lines
double property_lookup(const std::string &element_name, const std::string &property_name) const
access property of Element with element_name
FastList< BLMPlacement > blm_list
List of parser defined blms.
std::vector< std::string > sequences
Names of all defined sequences in the parser with 'line'.
const int MAX_EXPAND_ITERATIONS
maximum number of nested lines
Scorer scorer
Scorer instance.
void ExtendValue(const std::string &property, T value)
Add value to be extended to object.
std::string current_line
Name of beamline.
void ExtendObject(C &object)
Extend object with maps.
FastList< Crystal > crystal_list
FastList< Placement > placement_list
List of parser defined placements.
Material material
Material instance;.
virtual ~Parser()
Destructor.
void expand_line(FastList< Element > &target, const std::string &name, std::string start="", std::string end="")
Symtab * symlook(const std::string &s)
look up parser symbol
static Parser * Instance()
Access method.
std::map< std::string, FastList< Element > * > expandedSequences
Cached copy of expanded sequences.
FastList< Region > region_list
List of parser defined regions.
void SetValue(std::string property, T value)
Set value for parser class.
FastList< NewColour > colour_list
List of parser defined colours.
Parameters params
Parameters to copy to Element.
int add_sampler_partIDSet(std::list< int > *samplerPartIDListIn)
FastList< Tunnel > tunnel_list
List of parser defined tunnels.
FastList< Element > element_list
List of all encountered elements.
Container & GetList()
Get list for parser class C.
void add_sampler(const std::string &name, int count, ElementType type, std::string samplerType, std::list< int > *samplerPartIDListIn=nullptr)
insert a sampler into beamline_list
C & GetGlobal()
Get global object of parser class C.
int copy_element_to_params(const std::string &elementName)
copy properties from Element into params, returns element type as integer, returs _NONE if not found
bool TryPrintingObject(const std::string &objectName) const
Options options
General options.
Element & find_element(const std::string &element_name)
find element
FastList< Aperture > aperture_list
List of parser defined apertures.
Tunnel tunnel
Tunnel instance.
FastList< PhysicsBiasing > xsecbias_list
List of parser defined cross section biasing objects.
void write_table(std::string *name, ElementType type, bool isLine=false)
Method that transfers parameters to element properties.
const Element * find_placement_element_safe(const std::string &element_name) const
search placement_element
void PrintElements() const
Print methods.
FastList< Element > placement_elements
std::vector< std::string * > var_list
Variable vector for memory storage.
FastList< Element > beamline_list
Beamline.
void add_element_temp(const std::string &name, int number, bool pushfront, ElementType linetype)
add element to temporary element sequence tmp_list
std::set< std::set< int > > samplerFilters
FastList< SamplerPlacement > samplerplacement_list
List of parser defined sampler placements.
Field field
Field instance;.
std::list< Element > tmp_list
Temporary list.
Query query
Query instance.
Aperture aperture
Aperture instance.
void AddVariable(std::string *name)
Add variable memory to variable list for memory management.
BLMPlacement blm
BLM instance.
std::map< std::string, std::string > extendedStrings
Map for options of type string for extending objects.
Region region
Region instance;.
std::string current_end
Name of beamline.
void ParseFile(FILE *f)
Parse the input file and construct beamline_list and options.
bool FindAndExtend(const std::string &objectName)
Find object by name in list.
SymbolMap symtab_map
Parser symbol map.
void PrintBeamline() const
Print methods.
const FastList< Element > & get_sequence(const std::string &name)
std::map< std::string, Array * > extendedVectors
Map for options of type vector for extending objects.
void set_sampler(const std::string &name, int count, ElementType type, const std::string &samplerType, double samplerRadius=0, int particleSetID=-1)
Set sampler.
double GetValue(std::string property)
Get value for parser class (only for doubles)
Symtab * symcreate(const std::string &s)
create new parser symbol
NewColour colour
NewColour instance.
ScorerMesh scorermesh
ScorerMesh instance.
const FastList< Element > & GetBeamline() const
void PrintOptions() const
Print methods.
FastList< Field > field_list
List of parser defined fields.
FastList< CavityModel > cavitymodel_list
List of parser defined rf cavity models.
std::map< std::string, double > extendedNumbers
Map for options of type double for extending objects.
Placement placement
Placement instance.
std::list< double > tmparray
temporary list for reading of arrays in parser
CavityModel cavitymodel
RF Cavity model instance.
FastList< Query > query_list
List of parser defined query objects.
Parser()=delete
No default constructor.
void Store(double value)
Add value to front of temporary list.
static Parser * instance
Instance.
PhysicsBiasing xsecbias
PhysicsBiasing instance.
void add_func(std::string name, double(*func)(double))
Add function to parser.
void Initialise()
Initialisation of parser functions and constants.
FastList< Material > material_list
List of parser defined materials.
std::string current_start
Name of beamline.
const Element * find_element_safe(const std::string &element_name) const
find element by pointer - nullptr if not found - searches element_list
void expand_sequences()
Expand all sequences define with 'line' into FastLists.
std::list< std::string > tmpstring
temporary list for reading of arrays in parser
SamplerPlacement samplerplacement
Sampler placement instance.
Physics biasing class for parser.
Placement class for parser.
Query structure class for parser.
Sampler placement class for parser.
ScorerMesh class for parser.
Class that hold the symbol table.
Parser namespace for GMAD language. Combination of Geant4 and MAD.
ElementType
types of elements
Parameters - Element class with booleans.