BDSIM
BDSIM is a Geant4 extension toolkit for simulation of particle transport in accelerator beamlines.
|
#include <parser.h>
Public Member Functions | |
Parser ()=delete | |
No default constructor. | |
virtual | ~Parser () |
Destructor. | |
void | quit () |
Exit method. | |
void | write_table (std::string *name, ElementType type, bool isLine=false) |
Method that transfers parameters to element properties. | |
void | expand_line (FastList< Element > &target, const std::string &name, const std::string &start="", const std::string &end="") |
void | expand_line (const std::string &name, const std::string &start, const std::string &end) |
Expand the main beamline as defined by the use command. | |
const FastList< Element > & | get_sequence (const std::string &name) |
int | add_sampler_partIDSet (std::list< int > *samplerPartIDListIn) |
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 | |
template<class C , class Container = FastList<C>> | |
void | Add () |
Insert global object of parser class C in Container class. | |
template<class C , class Container = FastList<C>> | |
void | Add (bool unique, const std::string &className) |
template<class C > | |
C & | GetGlobal () |
Get global object of parser class C. | |
template<class C , class Container = FastList<C>> | |
Container & | GetList () |
Get list for parser class C. | |
const std::set< std::set< int > > & | GetSamplerFilters () const |
const std::map< int, std::set< int > > & | GetSamplerFilterIDToSet () const |
Element & | find_element (const std::string &element_name) |
find element | |
const Element & | find_element (const std::string &element_name) const |
find element (const) | |
const Element * | find_element_safe (const std::string &element_name) const |
find element by pointer - nullptr if not found - searches element_list | |
const Element * | find_placement_element_safe (const std::string &element_name) const |
search placement_element | |
double | property_lookup (const std::string &element_name, const std::string &property_name) const |
access property of Element with element_name | |
void | add_element_temp (const std::string &name, int number, bool pushfront, ElementType linetype) |
add element to temporary element sequence tmp_list | |
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 | InvalidSymbolName (const std::string &s, std::string &errorReason) |
Symtab * | symcreate (const std::string &s) |
create new parser symbol | |
Symtab * | symlook (const std::string &s) |
look up parser symbol | |
void | ClearParams () |
template<class C , typename T > | |
void | SetValue (std::string property, T value) |
Set value for parser class. | |
template<class C > | |
double | GetValue (std::string property) |
Get value for parser class (only for doubles) | |
template<typename T > | |
std::list< T > * | ArrayToList (Array *) |
template<typename T > | |
void | ExtendValue (const std::string &property, T value) |
Add value to be extended to object. | |
void | Overwrite (const std::string &objectName) |
Overwrite object with current values. | |
void | AddVariable (std::string *name) |
Add variable memory to variable list for memory management. | |
bool | TryPrintingObject (const std::string &objectName) const |
const FastList< Element > & | GetBeamline () const |
template<> | |
Beam & | GetGlobal () |
template<> | |
FastList< Region > & | GetList () |
template<> | |
FastList< NewColour > & | GetList () |
template<> | |
FastList< Crystal > & | GetList () |
template<> | |
FastList< Field > & | GetList () |
template<> | |
FastList< Query > & | GetList () |
template<> | |
FastList< Atom > & | GetList () |
template<> | |
FastList< Material > & | GetList () |
template<> | |
FastList< Tunnel > & | GetList () |
template<> | |
FastList< CavityModel > & | GetList () |
template<> | |
FastList< Scorer > & | GetList () |
template<> | |
FastList< ScorerMesh > & | GetList () |
template<> | |
FastList< Placement > & | GetList () |
template<> | |
FastList< PhysicsBiasing > & | GetList () |
template<> | |
FastList< SamplerPlacement > & | GetList () |
template<> | |
FastList< BLMPlacement > & | GetList () |
template<> | |
FastList< Modulator > & | GetList () |
template<> | |
FastList< Aperture > & | GetList () |
template<> | |
void | ExtendValue (const std::string &property, double value) |
template<> | |
void | ExtendValue (const std::string &property, std::string value) |
template<> | |
void | ExtendValue (const std::string &property, Array *value) |
template<> | |
void | Add (bool unique, const std::string &className) |
void | Store (double value) |
Add value to front of temporary list. | |
void | Store (const std::string &name) |
Add value to front of temporary list. | |
void | FillArray (Array *) |
void | FillString (Array *) |
void | PrintBeamline () const |
Print methods. | |
void | PrintElements () const |
Print methods. | |
void | PrintOptions () const |
Print methods. | |
Static Public Member Functions | |
static Parser * | Instance (const std::string &filename) |
Constructor method. | |
static Parser * | Instance () |
Access method. | |
Data Fields | |
std::string | current_line |
Name of beamline. | |
std::string | current_start |
Name of beamline. | |
std::string | current_end |
Name of beamline. | |
Protected Member Functions | |
Parser (std::string filename) | |
Constructor from filename. | |
Protected Attributes | |
Beam | beam |
Beam instance;. | |
Options | options |
General options. | |
FastList< Element > | beamline_list |
Beamline. | |
FastList< Atom > | atom_list |
List of parser defined instances of that object. | |
FastList< NewColour > | colour_list |
List of parser defined instances of that object. | |
FastList< Crystal > | crystal_list |
List of parser defined instances of that object. | |
FastList< Field > | field_list |
List of parser defined instances of that object. | |
FastList< Material > | material_list |
List of parser defined instances of that object. | |
FastList< Query > | query_list |
List of parser defined instances of that object. | |
FastList< Region > | region_list |
List of parser defined instances of that object. | |
FastList< Tunnel > | tunnel_list |
List of parser defined instances of that object. | |
FastList< PhysicsBiasing > | xsecbias_list |
List of parser defined instances of that object. | |
FastList< Placement > | placement_list |
List of parser defined instances of that object. | |
FastList< CavityModel > | cavitymodel_list |
List of parser defined instances of that object. | |
FastList< SamplerPlacement > | samplerplacement_list |
List of parser defined instances of that object. | |
FastList< Scorer > | scorer_list |
List of parser defined instances of that object. | |
FastList< ScorerMesh > | scorermesh_list |
List of parser defined instances of that object. | |
FastList< Aperture > | aperture_list |
List of parser defined instances of that object. | |
FastList< BLMPlacement > | blm_list |
List of parser defined instances of that object. | |
FastList< Modulator > | modulator_list |
List of parser defined instances of that object. | |
Private Member Functions | |
void | Initialise () |
Initialisation of parser functions and constants. | |
void | ParseFile (FILE *f) |
Parse the input file and construct beamline_list and options. | |
void | set_sampler (const std::string &name, int count, ElementType type, const std::string &samplerType, double samplerRadius=0, int particleSetID=-1) |
Set sampler. | |
void | add_func (std::string name, double(*func)(double)) |
Add function to parser. | |
void | add_var (std::string name, double value, int is_reserved=0) |
void | expand_sequences () |
Expand all sequences define with 'line' into FastLists. | |
template<class C > | |
bool | FindAndExtend (const std::string &objectName) |
Find object by name in list. | |
template<class C > | |
void | ExtendObject (C &object) |
Extend object with maps. | |
Private Attributes | |
const int | MAX_EXPAND_ITERATIONS = 50 |
maximum number of nested lines | |
std::vector< std::list< Element > * > | allocated_lines |
std::map< std::string, double > | extendedNumbers |
Map for options of type double for extending objects. | |
std::map< std::string, std::string > | extendedStrings |
Map for options of type string for extending objects. | |
std::map< std::string, Array * > | extendedVectors |
Map for options of type vector for extending objects. | |
FastList< Element > | element_list |
List of all encountered elements. | |
FastList< Element > | placement_elements |
std::list< Element > | tmp_list |
Temporary list. | |
std::vector< std::string > | sequences |
Names of all defined sequences in the parser with 'line'. | |
std::map< std::string, FastList< Element > * > | expandedSequences |
Cached copy of expanded sequences. | |
SymbolMap | symtab_map |
Parser symbol map. | |
std::vector< std::string * > | var_list |
Variable vector for memory storage. | |
std::set< std::set< int > > | samplerFilters |
std::map< int, std::set< int > > | samplerFilterIDToSet |
std::map< std::set< int >, int > | setToSamplerFilterID |
std::list< double > | tmparray |
temporary list for reading of arrays in parser | |
std::list< std::string > | tmpstring |
temporary list for reading of arrays in parser | |
Parameters | params |
The one instance we fill before appending to a list. | |
Atom | atom |
The one instance we fill before appending to a list. | |
NewColour | colour |
The one instance we fill before appending to a list. | |
Crystal | crystal |
The one instance we fill before appending to a list. | |
Field | field |
The one instance we fill before appending to a list. | |
Material | material |
The one instance we fill before appending to a list. | |
PhysicsBiasing | xsecbias |
The one instance we fill before appending to a list. | |
Placement | placement |
The one instance we fill before appending to a list. | |
Query | query |
The one instance we fill before appending to a list. | |
Region | region |
The one instance we fill before appending to a list. | |
Tunnel | tunnel |
The one instance we fill before appending to a list. | |
CavityModel | cavitymodel |
The one instance we fill before appending to a list. | |
SamplerPlacement | samplerplacement |
The one instance we fill before appending to a list. | |
Scorer | scorer |
The one instance we fill before appending to a list. | |
ScorerMesh | scorermesh |
The one instance we fill before appending to a list. | |
Aperture | aperture |
The one instance we fill before appending to a list. | |
BLMPlacement | blm |
The one instance we fill before appending to a list. | |
Modulator | modulator |
The one instance we fill before appending to a list. | |
Static Private Attributes | |
static Parser * | instance = nullptr |
Instance. | |
|
virtual |
Destructor.
Definition at line 115 of file parser.cc.
References allocated_lines, beamline_list, and instance.
|
explicitprotected |
Constructor from filename.
Definition at line 125 of file parser.cc.
References Initialise(), instance, and ParseFile().
void GMAD::Parser::Add |
void GMAD::Parser::Add | ( | bool | unique, |
const std::string & | className | ||
) |
Specialisation for Placements where we separately cache an Element. Note we can't do a partial specialisation so we have to do a full explicit one. Therefore we also have to be careful about the order we declare this because of where these functions are used. Also, we can't implement it in the header because we'd get multiple symbols. Therefore, declared here, but implemented in cc file with explicit instantiation of templates we need in rest of cc file.
Definition at line 1069 of file parser.cc.
References GMAD::Placement::bdsimElement, GMAD::Placement::clear(), GMAD::Placement::name, and GMAD::Placement::print().
void GMAD::Parser::Add | ( | bool | unique, |
const std::string & | className | ||
) |
void Parser::add_element_temp | ( | const std::string & | name, |
int | number, | ||
bool | pushfront, | ||
ElementType | linetype | ||
) |
add element to temporary element sequence tmp_list
Definition at line 641 of file parser.cc.
References GMAD::Element::lst, tmp_list, and GMAD::Element::type.
|
private |
Add function to parser.
Definition at line 681 of file parser.cc.
References GMAD::Symtab::Set(), GMAD::SymbolMap::symcreate(), and symtab_map.
Referenced by Initialise().
void Parser::add_sampler | ( | const std::string & | name, |
int | count, | ||
ElementType | type, | ||
std::string | samplerType, | ||
std::list< int > * | samplerPartIDListIn = nullptr |
||
) |
insert a sampler into beamline_list
Definition at line 574 of file parser.cc.
References add_sampler_partIDSet(), and set_sampler().
int Parser::add_sampler_partIDSet | ( | std::list< int > * | samplerPartIDListIn | ) |
Add a particle set for a sampler and return a unique integer ID for that set. If no list or empty list given, returns -1, the default for 'no filter'.
Definition at line 556 of file parser.cc.
References samplerFilters.
Referenced by add_sampler().
|
private |
void Parser::AddVariable | ( | std::string * | name | ) |
std::list< T > * GMAD::Parser::ArrayToList | ( | Array * | arrayIn | ) |
void Parser::ClearParams | ( | ) |
Reset parameters
Definition at line 732 of file parser.cc.
References GMAD::Parameters::flush(), params, and samplerFilters.
int Parser::copy_element_to_params | ( | const std::string & | elementName | ) |
copy properties from Element into params, returns element type as integer, returs _NONE if not found
Definition at line 666 of file parser.cc.
References find_element(), GMAD::Parameters::inherit_properties(), params, and GMAD::Element::type.
void Parser::expand_line | ( | const std::string & | name, |
const std::string & | start, | ||
const std::string & | end | ||
) |
Expand the main beamline as defined by the use command.
Definition at line 301 of file parser.cc.
References beamline_list, and expand_line().
void Parser::expand_line | ( | FastList< Element > & | target, |
const std::string & | name, | ||
const std::string & | start = "" , |
||
const std::string & | end = "" |
||
) |
Expand a sequence by name from start to end into the target list. This removes sublines from the beamline into one LINE.
Definition at line 308 of file parser.cc.
References GMAD::FastList< T >::begin(), GMAD::FastList< T >::clear(), element_list, GMAD::FastList< T >::end(), GMAD::FastList< T >::erase(), GMAD::FastList< T >::find(), find_element(), GMAD::FastList< T >::insert(), GMAD::Element::l, GMAD::Element::lst, MAX_EXPAND_ITERATIONS, GMAD::FastList< T >::push_back(), and GMAD::Element::type.
Referenced by expand_line(), and expand_sequences().
|
private |
Expand all sequences define with 'line' into FastLists.
Definition at line 291 of file parser.cc.
References expand_line(), expandedSequences, and sequences.
Referenced by ParseFile().
|
private |
Extend object with maps.
Definition at line 808 of file parser.cc.
References extendedNumbers, extendedStrings, and extendedVectors.
Referenced by FindAndExtend(), and Overwrite().
void GMAD::Parser::ExtendValue | ( | const std::string & | property, |
Array * | value | ||
) |
void GMAD::Parser::ExtendValue | ( | const std::string & | property, |
double | value | ||
) |
void GMAD::Parser::ExtendValue | ( | const std::string & | property, |
std::string | value | ||
) |
void Parser::FillArray | ( | Array * | array | ) |
Fill array object from temporary list and clear temporary list
Definition at line 720 of file parser.cc.
References GMAD::Array::Copy(), and tmparray.
void Parser::FillString | ( | Array * | array | ) |
Fill array object from temporary list and clear temporary list
Definition at line 726 of file parser.cc.
References GMAD::Array::Copy(), and tmpstring.
Element & Parser::find_element | ( | const std::string & | element_name | ) |
find element
Definition at line 586 of file parser.cc.
References element_list.
Referenced by copy_element_to_params(), expand_line(), and property_lookup().
const Element & Parser::find_element | ( | const std::string & | element_name | ) | const |
const Element * Parser::find_element_safe | ( | const std::string & | element_name | ) | const |
find element by pointer - nullptr if not found - searches element_list
Definition at line 623 of file parser.cc.
References element_list.
Referenced by BDSParser::GetElement().
const Element * Parser::find_placement_element_safe | ( | const std::string & | element_name | ) | const |
search placement_element
Definition at line 611 of file parser.cc.
References placement_elements.
Referenced by BDSParser::GetPlacementElement().
|
private |
Find object by name in list.
Definition at line 795 of file parser.cc.
References GMAD::FastList< T >::end(), ExtendObject(), and GMAD::FastList< T >::find().
Find the sequence defined in the parser and expand it if not already done so. Cache result in map of fastlists.
Definition at line 461 of file parser.cc.
References expandedSequences.
Referenced by BDSParser::GetSequence().
Beamline Access.
Definition at line 903 of file parser.cc.
References beamline_list.
Referenced by BDSDetectorConstruction::BuildBeamlines(), and BDSDetectorConstruction::UpdateSamplerDiameterAndCountSamplers().
FastList< CavityModel > & GMAD::Parser::GetList | ( | ) |
FastList< ScorerMesh > & GMAD::Parser::GetList | ( | ) |
FastList< PhysicsBiasing > & GMAD::Parser::GetList | ( | ) |
FastList< SamplerPlacement > & GMAD::Parser::GetList | ( | ) |
FastList< BLMPlacement > & GMAD::Parser::GetList | ( | ) |
|
inline |
|
inline |
double GMAD::Parser::GetValue | ( | std::string | property | ) |
|
private |
Initialisation of parser functions and constants.
Definition at line 188 of file parser.cc.
References add_func(), GMAD::Parameters::flush(), and params.
Referenced by Parser().
|
static |
|
static |
bool Parser::InvalidSymbolName | ( | const std::string & | s, |
std::string & | errorReason | ||
) |
void Parser::Overwrite | ( | const std::string & | objectName | ) |
Overwrite object with current values.
Definition at line 738 of file parser.cc.
References element_list, extendedNumbers, extendedStrings, extendedVectors, ExtendObject(), and xsecbias_list.
|
private |
Parse the input file and construct beamline_list and options.
Definition at line 156 of file parser.cc.
References GMAD::SymbolMap::clear(), element_list, expand_sequences(), symtab_map, tmp_list, and var_list.
Referenced by Parser().
void Parser::PrintBeamline | ( | ) | const |
void Parser::PrintElements | ( | ) | const |
void Parser::PrintOptions | ( | ) | const |
Print methods.
Definition at line 833 of file parser.cc.
References options, and GMAD::OptionsBase::print().
double Parser::property_lookup | ( | const std::string & | element_name, |
const std::string & | property_name | ||
) | const |
access property of Element with element_name
Definition at line 635 of file parser.cc.
References find_element(), and GMAD::Element::property_lookup().
|
private |
Set sampler.
Definition at line 471 of file parser.cc.
References beamline_list.
Referenced by add_sampler().
void GMAD::Parser::SetValue | ( | std::string | property, |
T | value | ||
) |
void Parser::Store | ( | const std::string & | name | ) |
void Parser::Store | ( | double | value | ) |
Symtab * Parser::symcreate | ( | const std::string & | s | ) |
create new parser symbol
Definition at line 701 of file parser.cc.
References GMAD::SymbolMap::symcreate(), and symtab_map.
Symtab * Parser::symlook | ( | const std::string & | s | ) |
look up parser symbol
Definition at line 706 of file parser.cc.
References GMAD::SymbolMap::symlook(), and symtab_map.
bool Parser::TryPrintingObject | ( | const std::string & | objectName | ) | const |
Search each member vector for an object with the matching name. Return true if successfully printed.
Definition at line 838 of file parser.cc.
References aperture_list, atom_list, blm_list, cavitymodel_list, colour_list, crystal_list, field_list, material_list, modulator_list, placement_list, query_list, region_list, samplerplacement_list, scorer_list, scorermesh_list, tunnel_list, and xsecbias_list.
void Parser::write_table | ( | std::string * | name, |
ElementType | type, | ||
bool | isLine = false |
||
) |
Method that transfers parameters to element properties.
Definition at line 274 of file parser.cc.
References allocated_lines, element_list, GMAD::Element::lst, params, sequences, GMAD::Element::set(), and tmp_list.
|
private |
vector of defined lines for memory management
Definition at line 264 of file parser.h.
Referenced by write_table(), and ~Parser().
|
private |
List of parser defined instances of that object.
Definition at line 247 of file parser.h.
Referenced by BDSParser::GetApertures(), and TryPrintingObject().
|
private |
List of parser defined instances of that object.
Definition at line 233 of file parser.h.
Referenced by BDSParser::GetAtoms(), and TryPrintingObject().
|
protected |
Beam instance;.
Definition at line 227 of file parser.h.
Referenced by BDSParser::AmalgamateBeam(), BDSParser::CheckOptions(), BDSParser::GetBeam(), and BDSParser::GetBeamBase().
Beamline.
Definition at line 231 of file parser.h.
Referenced by expand_line(), GetBeamline(), PrintBeamline(), set_sampler(), and ~Parser().
|
private |
|
protected |
List of parser defined instances of that object.
Definition at line 248 of file parser.h.
Referenced by BDSParser::GetBLMs(), and TryPrintingObject().
|
private |
|
protected |
List of parser defined instances of that object.
Definition at line 243 of file parser.h.
Referenced by BDSParser::GetCavityModels(), and TryPrintingObject().
|
private |
List of parser defined instances of that object.
Definition at line 234 of file parser.h.
Referenced by BDSParser::GetColours(), and TryPrintingObject().
|
private |
List of parser defined instances of that object.
Definition at line 235 of file parser.h.
Referenced by BDSParser::GetCrystals(), and TryPrintingObject().
List of all encountered elements.
Definition at line 302 of file parser.h.
Referenced by expand_line(), find_element(), find_element_safe(), Overwrite(), ParseFile(), PrintElements(), and write_table().
Cached copy of expanded sequences.
Definition at line 316 of file parser.h.
Referenced by expand_sequences(), and get_sequence().
|
private |
Map for options of type double for extending objects.
Definition at line 295 of file parser.h.
Referenced by ExtendObject(), and Overwrite().
|
private |
Map for options of type string for extending objects.
Definition at line 297 of file parser.h.
Referenced by ExtendObject(), and Overwrite().
|
private |
Map for options of type vector for extending objects.
Definition at line 299 of file parser.h.
Referenced by ExtendObject(), and Overwrite().
|
private |
List of parser defined instances of that object.
Definition at line 236 of file parser.h.
Referenced by BDSParser::GetFields(), and TryPrintingObject().
|
staticprivate |
Instance.
Definition at line 96 of file parser.h.
Referenced by Instance(), Parser(), and ~Parser().
|
private |
List of parser defined instances of that object.
Definition at line 237 of file parser.h.
Referenced by BDSParser::GetMaterials(), and TryPrintingObject().
|
private |
maximum number of nested lines
Definition at line 257 of file parser.h.
Referenced by expand_line().
|
private |
List of parser defined instances of that object.
Definition at line 249 of file parser.h.
Referenced by BDSParser::GetModulators(), and TryPrintingObject().
|
protected |
General options.
Definition at line 229 of file parser.h.
Referenced by BDSParser::AmalgamateOptions(), BDSParser::CheckOptions(), BDSParser::GetOptions(), BDSParser::GetOptionsBase(), and PrintOptions().
|
private |
The one instance we fill before appending to a list.
Definition at line 267 of file parser.h.
Referenced by ClearParams(), copy_element_to_params(), Initialise(), and write_table().
|
private |
List of element definitions that are used in placements - keep separately a copy so that when we clear all the lists after expanding the lines we still have the element definitions we need
Definition at line 307 of file parser.h.
Referenced by find_placement_element_safe().
List of parser defined instances of that object.
Definition at line 242 of file parser.h.
Referenced by BDSParser::GetPlacements(), and TryPrintingObject().
|
private |
List of parser defined instances of that object.
Definition at line 238 of file parser.h.
Referenced by BDSParser::GetQuery(), and TryPrintingObject().
|
private |
List of parser defined instances of that object.
Definition at line 239 of file parser.h.
Referenced by BDSParser::GetRegions(), and TryPrintingObject().
|
private |
|
private |
Set of unique sets of particle IDs. This will allow us to build up unique Sensitive detectors for particles later on.
Definition at line 325 of file parser.h.
Referenced by add_sampler_partIDSet(), and ClearParams().
|
private |
|
protected |
List of parser defined instances of that object.
Definition at line 244 of file parser.h.
Referenced by BDSParser::GetSamplerPlacements(), and TryPrintingObject().
|
private |
List of parser defined instances of that object.
Definition at line 245 of file parser.h.
Referenced by BDSParser::GetScorers(), and TryPrintingObject().
|
private |
|
protected |
List of parser defined instances of that object.
Definition at line 246 of file parser.h.
Referenced by BDSParser::GetScorerMesh(), and TryPrintingObject().
|
private |
Names of all defined sequences in the parser with 'line'.
Definition at line 313 of file parser.h.
Referenced by expand_sequences(), and write_table().
|
private |
|
private |
Parser symbol map.
Definition at line 319 of file parser.h.
Referenced by add_func(), ParseFile(), symcreate(), and symlook().
|
private |
Temporary list.
Definition at line 310 of file parser.h.
Referenced by add_element_temp(), ParseFile(), and write_table().
|
private |
temporary list for reading of arrays in parser
Definition at line 260 of file parser.h.
Referenced by FillArray(), and Store().
|
private |
temporary list for reading of arrays in parser
Definition at line 261 of file parser.h.
Referenced by FillString(), and Store().
|
private |
List of parser defined instances of that object.
Definition at line 240 of file parser.h.
Referenced by TryPrintingObject().
|
private |
Variable vector for memory storage.
Definition at line 321 of file parser.h.
Referenced by AddVariable(), and ParseFile().
|
private |
|
protected |
List of parser defined instances of that object.
Definition at line 241 of file parser.h.
Referenced by BDSParser::GetBiasing(), BDSParser::GetBiasingVector(), Overwrite(), and TryPrintingObject().