6#ifndef HEPMC3_ATTRIBUTE_H
7#define HEPMC3_ATTRIBUTE_H
29#include "HepMC3/GenParticle_fwd.h"
30#include "HepMC3/GenVertex_fwd.h"
119 return std::const_pointer_cast<GenParticle>(
m_particle);
129 return std::const_pointer_cast<GenVertex>(
m_vertex);
168 m_val = atoi( att.c_str() );
175 att = std::to_string(
m_val);
211 m_val = atol( att.c_str() );
218 att = std::to_string(
m_val);
256 m_val = atof( att.c_str() );
263 std::ostringstream oss;
264 oss << std::setprecision(std::numeric_limits<double>::digits10)
303 m_val = float(atof( att.c_str() ));
310 std::ostringstream oss;
311 oss << std::setprecision(std::numeric_limits<float>::digits10)
409 att = std::to_string(
m_val);
445 m_val = atoll( att.c_str() );
452 att = std::to_string(
m_val);
490 m_val = strtold( att.c_str(),
nullptr);
497 std::ostringstream oss;
498 oss << std::setprecision(std::numeric_limits<long double>::digits10)
539 m_val = strtoul(att.c_str(),
nullptr, 0);
546 att = std::to_string(
m_val);
584 m_val = strtoul(att.c_str(),
nullptr, 0);
591 att = std::to_string(
m_val);
628 m_val = strtoull(att.c_str(),
nullptr, 0);
635 att = std::to_string(
m_val);
671 if (att.size()!=1)
return false;
672 if (att==std::string(
"1")) {
m_val =
true;
return true;}
673 if (att==std::string(
"0")) {
m_val =
false;
return true;}
680 att = std::to_string(
m_val);
718 std::stringstream datastream(att);
719 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
727 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
766 std::stringstream datastream(att);
767 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
775 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
814 std::stringstream datastream(att);
815 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
823 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
828 std::vector<long double>
value()
const {
863 std::stringstream datastream(att);
864 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
872 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
877 std::vector<long long>
value()
const {
908 unsigned int datafoo;
910 std::stringstream datastream(att);
911 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
919 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
924 std::vector<unsigned int>
value()
const {
955 unsigned long datafoo;
957 std::stringstream datastream(att);
958 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
966 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
971 std::vector<unsigned long>
value()
const {
1003 unsigned long long datafoo;
1005 std::stringstream datastream(att);
1006 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
1014 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
1019 std::vector<unsigned long long>
value()
const {
1052 std::stringstream datastream(att);
1053 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
1061 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
1100 std::stringstream datastream(att);
1101 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
1109 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
1147 std::stringstream datastream(att);
1148 while (datastream >> datafoo)
m_val.emplace_back(datafoo);
1156 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=std::to_string(a);}
1193 size_t posb = att.find_first_not_of(
' ');
1195 size_t pose = att.find_first_of(
' ', posb);
1196 m_val.push_back(att.substr(posb, pose - posb));
1197 posb = att.find_first_not_of(
' ', pose);
1198 }
while (posb != std::string::npos);
1206 for (
const auto& a:
m_val) {
if (att.length()) att+=
" "; att+=a;}
1211 std::vector<std::string>
value()
const {
virtual ~Attribute()
Virtual destructor.
const std::string & unparsed_string() const
Get unparsed string.
Attribute(const std::string &st)
Protected constructor that allows to set string.
bool is_parsed() const
Check if this attribute is parsed.
ConstGenVertexPtr vertex() const
const GenEvent * event() const
Attribute()
Default constructor.
ConstGenParticlePtr particle() const
std::string m_string
Raw (unparsed) string.
GenParticlePtr particle()
virtual bool from_string(const std::string &att)=0
Fill class content from string.
GenVertexPtr m_vertex
Vertex to which assigned.
void set_unparsed_string(const std::string &st)
Set unparsed string.
virtual bool to_string(std::string &att) const =0
Fill string from class content.
GenParticlePtr m_particle
controlling GenEvent object.
virtual bool init(const GenRunInfo &)
Optionally initialize the attribute after from_string.
virtual bool init()
Optionally initialize the attribute after from_string.
friend class GenEvent
GenEvent is a friend.
void set_is_parsed(bool flag)
Set is_parsed flag.
bool m_is_parsed
Is this attribute parsed?
BoolAttribute(bool val)
Constructor initializing attribute value.
BoolAttribute()
Default constructor.
bool value() const
get the value associated to this Attribute.
bool m_val
Attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
void set_value(const bool &i)
set the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
CharAttribute(char val)
Constructor initializing attribute value.
CharAttribute()
Default constructor.
void set_value(const char &i)
set the value associated to this Attribute.
char value() const
get the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
char m_val
Attribute value.
double m_val
Attribute value.
void set_value(const double &d)
set the value associated to this Attribute.
double value() const
get the value associated to this Attribute.
DoubleAttribute()
Default constructor.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
DoubleAttribute(double val)
Constructor initializing attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
float m_val
Attribute value.
FloatAttribute()
Default constructor.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
FloatAttribute(float val)
Constructor initializing attribute value.
void set_value(const float &f)
set the value associated to this Attribute.
float value() const
get the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
Stores event-related information.
Stores run-related information.
int m_val
Attribute value.
void set_value(const int &i)
set the value associated to this Attribute.
IntAttribute()
Default constructor.
int value() const
get the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
IntAttribute(int val)
Constructor initializing attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
long m_val
Attribute value.
LongAttribute(long val)
Constructor initializing attribute value.
void set_value(const long &l)
set the value associated to this Attribute.
long value() const
get the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
LongAttribute()
Default constructor.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
long double m_val
Attribute value.
LongDoubleAttribute()
Default constructor.
LongDoubleAttribute(long double val)
Constructor initializing attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
void set_value(const long double &d)
set the value associated to this Attribute.
long double value() const
get the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
long long value() const
get the value associated to this Attribute.
void set_value(const long long &l)
set the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
LongLongAttribute(long long val)
Constructor initializing attribute value.
LongLongAttribute()
Default constructor.
long long m_val
Attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
StringAttribute()
Default constructor - empty string.
void set_value(const std::string &s)
set the value associated to this Attribute.
StringAttribute(const std::string &st)
String-based constructor.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
std::string value() const
get the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
void set_value(const unsigned int &i)
set the value associated to this Attribute.
unsigned int value() const
get the value associated to this Attribute.
UIntAttribute(unsigned int val)
Constructor initializing attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
unsigned int m_val
Attribute value.
UIntAttribute()
Default constructor.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
ULongAttribute()
Default constructor.
ULongAttribute(unsigned long val)
Constructor initializing attribute value.
void set_value(const unsigned long &i)
set the value associated to this Attribute.
unsigned long m_val
Attribute value.
unsigned long value() const
get the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
unsigned long long m_val
Attribute value.
unsigned long long value() const
get the value associated to this Attribute.
ULongLongAttribute()
Default constructor.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
void set_value(const unsigned long long &i)
set the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
ULongLongAttribute(unsigned long long val)
Constructor initializing attribute value.
VectorCharAttribute(std::vector< char > val)
Constructor initializing attribute value.
std::vector< char > value() const
get the value associated to this Attribute.
std::vector< char > m_val
Attribute value.
void set_value(const std::vector< char > &i)
set the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
VectorCharAttribute()
Default constructor.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
std::vector< double > value() const
get the value associated to this Attribute.
void set_value(const std::vector< double > &i)
set the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
std::vector< double > m_val
Attribute value.
VectorDoubleAttribute(std::vector< double > val)
Constructor initializing attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
VectorDoubleAttribute()
Default constructor.
VectorFloatAttribute(std::vector< float > val)
Constructor initializing attribute value.
std::vector< float > value() const
get the value associated to this Attribute.
void set_value(const std::vector< float > &i)
set the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
VectorFloatAttribute()
Default constructor.
std::vector< float > m_val
Attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
std::vector< int > value() const
get the value associated to this Attribute.
std::vector< int > m_val
Attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
VectorIntAttribute()
Default constructor.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
void set_value(const std::vector< int > &i)
set the value associated to this Attribute.
VectorIntAttribute(std::vector< int > val)
Constructor initializing attribute value.
std::vector< long double > value() const
get the value associated to this Attribute.
void set_value(const std::vector< long double > &i)
set the value associated to this Attribute.
VectorLongDoubleAttribute()
Default constructor.
std::vector< long double > m_val
Attribute value.
VectorLongDoubleAttribute(std::vector< long double > val)
Constructor initializing attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
VectorLongIntAttribute(std::vector< long int > val)
Constructor initializing attribute value.
VectorLongIntAttribute()
Default constructor.
std::vector< long int > value() const
get the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
std::vector< long int > m_val
Attribute value.
void set_value(const std::vector< long int > &i)
set the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
std::vector< long long > value() const
get the value associated to this Attribute.
std::vector< long long > m_val
Attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
VectorLongLongAttribute()
Default constructor.
void set_value(const std::vector< long long > &i)
set the value associated to this Attribute.
VectorLongLongAttribute(std::vector< long long > val)
Constructor initializing attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
bool from_string(const string &att) override
Implementation of Attribute::from_string.
std::vector< std::string > value() const
get the value associated to this Attribute.
void set_value(const std::vector< std::string > &i)
set the value associated to this Attribute.
VectorStringAttribute(std::vector< std::string > val)
Constructor initializing attribute value.
VectorStringAttribute()
Default constructor.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
std::vector< std::string > m_val
Attribute value.
VectorUIntAttribute()
Default constructor.
std::vector< unsigned int > m_val
Attribute value.
VectorUIntAttribute(std::vector< unsigned int > val)
Constructor initializing attribute value.
std::vector< unsigned int > value() const
get the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
void set_value(const std::vector< unsigned int > &i)
set the value associated to this Attribute.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
void set_value(const std::vector< unsigned long > &i)
set the value associated to this Attribute.
std::vector< unsigned long > value() const
get the value associated to this Attribute.
std::vector< unsigned long > m_val
Attribute value.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
VectorULongAttribute()
Default constructor.
VectorULongAttribute(std::vector< unsigned long > val)
Constructor initializing attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
std::vector< unsigned long long > value() const
get the value associated to this Attribute.
VectorULongLongAttribute(std::vector< unsigned long long > val)
Constructor initializing attribute value.
void set_value(const std::vector< unsigned long long > &i)
set the value associated to this Attribute.
bool from_string(const std::string &att) override
Implementation of Attribute::from_string.
std::vector< unsigned long long > m_val
Attribute value.
bool to_string(std::string &att) const override
Implementation of Attribute::to_string.
VectorULongLongAttribute()
Default constructor.