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(),NULL);
 
 
  497        std::ostringstream oss;
 
  498        oss << std::setprecision(std::numeric_limits<long double>::digits10)
 
 
 
  539        m_val = strtoul(att.c_str(), NULL, 0);
 
 
  546        att = std::to_string(
m_val);
 
 
 
  584        m_val = strtoul(att.c_str(), NULL, 0);
 
 
  591        att = std::to_string(
m_val);
 
 
 
  628        m_val = strtoull(att.c_str(), NULL, 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.