// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: HepMC3.proto
// Protobuf C++ Version: 6.33.1

#ifndef HepMC3_2eproto_2epb_2eh
#define HepMC3_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6033001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_HepMC3_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_HepMC3_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_HepMC3_2eproto;
}  // extern "C"
namespace HepMC3_pb {
enum GenEventData_LengthUnit : int;
extern const uint32_t GenEventData_LengthUnit_internal_data_[];
enum GenEventData_MomentumUnit : int;
extern const uint32_t GenEventData_MomentumUnit_internal_data_[];
enum MessageDigest_MessageType : int;
extern const uint32_t MessageDigest_MessageType_internal_data_[];
class Footer;
struct FooterDefaultTypeInternal;
extern FooterDefaultTypeInternal _Footer_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Footer_class_data_;
class FourVector;
struct FourVectorDefaultTypeInternal;
extern FourVectorDefaultTypeInternal _FourVector_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull FourVector_class_data_;
class GenEventData;
struct GenEventDataDefaultTypeInternal;
extern GenEventDataDefaultTypeInternal _GenEventData_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull GenEventData_class_data_;
class GenEventData_GenParticleData;
struct GenEventData_GenParticleDataDefaultTypeInternal;
extern GenEventData_GenParticleDataDefaultTypeInternal _GenEventData_GenParticleData_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull GenEventData_GenParticleData_class_data_;
class GenEventData_GenVertexData;
struct GenEventData_GenVertexDataDefaultTypeInternal;
extern GenEventData_GenVertexDataDefaultTypeInternal _GenEventData_GenVertexData_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull GenEventData_GenVertexData_class_data_;
class GenRunInfoData;
struct GenRunInfoDataDefaultTypeInternal;
extern GenRunInfoDataDefaultTypeInternal _GenRunInfoData_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull GenRunInfoData_class_data_;
class Header;
struct HeaderDefaultTypeInternal;
extern HeaderDefaultTypeInternal _Header_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Header_class_data_;
class MessageDigest;
struct MessageDigestDefaultTypeInternal;
extern MessageDigestDefaultTypeInternal _MessageDigest_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull MessageDigest_class_data_;
}  // namespace HepMC3_pb
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::HepMC3_pb::GenEventData_LengthUnit_internal_data_>
    internal::EnumTraitsImpl::value<::HepMC3_pb::GenEventData_LengthUnit>;
template <>
internal::EnumTraitsT<::HepMC3_pb::GenEventData_MomentumUnit_internal_data_>
    internal::EnumTraitsImpl::value<::HepMC3_pb::GenEventData_MomentumUnit>;
template <>
internal::EnumTraitsT<::HepMC3_pb::MessageDigest_MessageType_internal_data_>
    internal::EnumTraitsImpl::value<::HepMC3_pb::MessageDigest_MessageType>;
}  // namespace protobuf
}  // namespace google

namespace HepMC3_pb {
enum MessageDigest_MessageType : int {
  MessageDigest_MessageType_unknown = 0,
  MessageDigest_MessageType_Header = 1,
  MessageDigest_MessageType_RunInfo = 2,
  MessageDigest_MessageType_Event = 3,
  MessageDigest_MessageType_Footer = 4,
};

extern const uint32_t MessageDigest_MessageType_internal_data_[];
inline constexpr MessageDigest_MessageType MessageDigest_MessageType_MessageType_MIN =
    static_cast<MessageDigest_MessageType>(0);
inline constexpr MessageDigest_MessageType MessageDigest_MessageType_MessageType_MAX =
    static_cast<MessageDigest_MessageType>(4);
inline bool MessageDigest_MessageType_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int MessageDigest_MessageType_MessageType_ARRAYSIZE = 4 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL MessageDigest_MessageType_descriptor();
template <typename T>
const ::std::string& MessageDigest_MessageType_Name(T value) {
  static_assert(::std::is_same<T, MessageDigest_MessageType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to MessageType_Name().");
  return MessageDigest_MessageType_Name(static_cast<MessageDigest_MessageType>(value));
}
template <>
inline const ::std::string& MessageDigest_MessageType_Name(MessageDigest_MessageType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<MessageDigest_MessageType_descriptor, 0, 4>(
      static_cast<int>(value));
}
inline bool MessageDigest_MessageType_Parse(
    ::absl::string_view name, MessageDigest_MessageType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<MessageDigest_MessageType>(MessageDigest_MessageType_descriptor(), name,
                                           value);
}
enum GenEventData_MomentumUnit : int {
  GenEventData_MomentumUnit_GEV = 0,
  GenEventData_MomentumUnit_MEV = 1,
};

extern const uint32_t GenEventData_MomentumUnit_internal_data_[];
inline constexpr GenEventData_MomentumUnit GenEventData_MomentumUnit_MomentumUnit_MIN =
    static_cast<GenEventData_MomentumUnit>(0);
inline constexpr GenEventData_MomentumUnit GenEventData_MomentumUnit_MomentumUnit_MAX =
    static_cast<GenEventData_MomentumUnit>(1);
inline bool GenEventData_MomentumUnit_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int GenEventData_MomentumUnit_MomentumUnit_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GenEventData_MomentumUnit_descriptor();
template <typename T>
const ::std::string& GenEventData_MomentumUnit_Name(T value) {
  static_assert(::std::is_same<T, GenEventData_MomentumUnit>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to MomentumUnit_Name().");
  return GenEventData_MomentumUnit_Name(static_cast<GenEventData_MomentumUnit>(value));
}
template <>
inline const ::std::string& GenEventData_MomentumUnit_Name(GenEventData_MomentumUnit value) {
  return ::google::protobuf::internal::NameOfDenseEnum<GenEventData_MomentumUnit_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool GenEventData_MomentumUnit_Parse(
    ::absl::string_view name, GenEventData_MomentumUnit* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<GenEventData_MomentumUnit>(GenEventData_MomentumUnit_descriptor(), name,
                                           value);
}
enum GenEventData_LengthUnit : int {
  GenEventData_LengthUnit_MM = 0,
  GenEventData_LengthUnit_CM = 1,
};

extern const uint32_t GenEventData_LengthUnit_internal_data_[];
inline constexpr GenEventData_LengthUnit GenEventData_LengthUnit_LengthUnit_MIN =
    static_cast<GenEventData_LengthUnit>(0);
inline constexpr GenEventData_LengthUnit GenEventData_LengthUnit_LengthUnit_MAX =
    static_cast<GenEventData_LengthUnit>(1);
inline bool GenEventData_LengthUnit_IsValid(int value) {
  return 0 <= value && value <= 1;
}
inline constexpr int GenEventData_LengthUnit_LengthUnit_ARRAYSIZE = 1 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GenEventData_LengthUnit_descriptor();
template <typename T>
const ::std::string& GenEventData_LengthUnit_Name(T value) {
  static_assert(::std::is_same<T, GenEventData_LengthUnit>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to LengthUnit_Name().");
  return GenEventData_LengthUnit_Name(static_cast<GenEventData_LengthUnit>(value));
}
template <>
inline const ::std::string& GenEventData_LengthUnit_Name(GenEventData_LengthUnit value) {
  return ::google::protobuf::internal::NameOfDenseEnum<GenEventData_LengthUnit_descriptor, 0, 1>(
      static_cast<int>(value));
}
inline bool GenEventData_LengthUnit_Parse(
    ::absl::string_view name, GenEventData_LengthUnit* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<GenEventData_LengthUnit>(GenEventData_LengthUnit_descriptor(), name,
                                           value);
}

// ===================================================================


// -------------------------------------------------------------------

class MessageDigest final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.MessageDigest) */ {
 public:
  inline MessageDigest() : MessageDigest(nullptr) {}
  ~MessageDigest() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MessageDigest* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MessageDigest));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR MessageDigest(::google::protobuf::internal::ConstantInitialized);

  inline MessageDigest(const MessageDigest& from) : MessageDigest(nullptr, from) {}
  inline MessageDigest(MessageDigest&& from) noexcept
      : MessageDigest(nullptr, ::std::move(from)) {}
  inline MessageDigest& operator=(const MessageDigest& from) {
    CopyFrom(from);
    return *this;
  }
  inline MessageDigest& operator=(MessageDigest&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const MessageDigest& default_instance() {
    return *reinterpret_cast<const MessageDigest*>(
        &_MessageDigest_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(MessageDigest& a, MessageDigest& b) { a.Swap(&b); }
  inline void Swap(MessageDigest* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MessageDigest* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  MessageDigest* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MessageDigest>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MessageDigest& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MessageDigest& from) { MessageDigest::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MessageDigest* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.MessageDigest"; }

  explicit MessageDigest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MessageDigest(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MessageDigest& from);
  MessageDigest(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MessageDigest&& from) noexcept
      : MessageDigest(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using MessageType = MessageDigest_MessageType;
  static constexpr MessageType unknown = MessageDigest_MessageType_unknown;
  static constexpr MessageType Header = MessageDigest_MessageType_Header;
  static constexpr MessageType RunInfo = MessageDigest_MessageType_RunInfo;
  static constexpr MessageType Event = MessageDigest_MessageType_Event;
  static constexpr MessageType Footer = MessageDigest_MessageType_Footer;
  static inline bool MessageType_IsValid(int value) {
    return MessageDigest_MessageType_IsValid(value);
  }
  static constexpr MessageType MessageType_MIN = MessageDigest_MessageType_MessageType_MIN;
  static constexpr MessageType MessageType_MAX = MessageDigest_MessageType_MessageType_MAX;
  static constexpr int MessageType_ARRAYSIZE = MessageDigest_MessageType_MessageType_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL MessageType_descriptor() {
    return MessageDigest_MessageType_descriptor();
  }
  template <typename T>
  static inline const ::std::string& MessageType_Name(T value) {
    return MessageDigest_MessageType_Name(value);
  }
  static inline bool MessageType_Parse(
      ::absl::string_view name, MessageType* PROTOBUF_NONNULL value) {
    return MessageDigest_MessageType_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kBytesFieldNumber = 1,
    kMessageTypeFieldNumber = 2,
  };
  // required fixed32 bytes = 1;
  bool has_bytes() const;
  void clear_bytes() ;
  ::uint32_t bytes() const;
  void set_bytes(::uint32_t value);

  private:
  ::uint32_t _internal_bytes() const;
  void _internal_set_bytes(::uint32_t value);

  public:
  // required fixed32 message_type = 2;
  bool has_message_type() const;
  void clear_message_type() ;
  ::uint32_t message_type() const;
  void set_message_type(::uint32_t value);

  private:
  ::uint32_t _internal_message_type() const;
  void _internal_set_message_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.MessageDigest)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MessageDigest& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t bytes_;
    ::uint32_t message_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull MessageDigest_class_data_;
// -------------------------------------------------------------------

class Header final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.Header) */ {
 public:
  inline Header() : Header(nullptr) {}
  ~Header() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Header* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Header));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Header(::google::protobuf::internal::ConstantInitialized);

  inline Header(const Header& from) : Header(nullptr, from) {}
  inline Header(Header&& from) noexcept
      : Header(nullptr, ::std::move(from)) {}
  inline Header& operator=(const Header& from) {
    CopyFrom(from);
    return *this;
  }
  inline Header& operator=(Header&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Header& default_instance() {
    return *reinterpret_cast<const Header*>(
        &_Header_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(Header& a, Header& b) { a.Swap(&b); }
  inline void Swap(Header* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Header* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Header* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Header>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Header& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Header& from) { Header::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Header* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.Header"; }

  explicit Header(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Header(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Header& from);
  Header(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Header&& from) noexcept
      : Header(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kVersionStrFieldNumber = 1,
    kVersionMajFieldNumber = 2,
    kVersionMinFieldNumber = 3,
    kVersionPatchFieldNumber = 4,
    kProtobufVersionMajFieldNumber = 5,
    kProtobufVersionMinFieldNumber = 6,
    kProtobufVersionPatchFieldNumber = 7,
  };
  // required string version_str = 1;
  bool has_version_str() const;
  void clear_version_str() ;
  const ::std::string& version_str() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_version_str(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_version_str();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_version_str();
  void set_allocated_version_str(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_version_str() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_version_str(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_version_str();

  public:
  // required uint32 version_maj = 2;
  bool has_version_maj() const;
  void clear_version_maj() ;
  ::uint32_t version_maj() const;
  void set_version_maj(::uint32_t value);

  private:
  ::uint32_t _internal_version_maj() const;
  void _internal_set_version_maj(::uint32_t value);

  public:
  // required uint32 version_min = 3;
  bool has_version_min() const;
  void clear_version_min() ;
  ::uint32_t version_min() const;
  void set_version_min(::uint32_t value);

  private:
  ::uint32_t _internal_version_min() const;
  void _internal_set_version_min(::uint32_t value);

  public:
  // required uint32 version_patch = 4;
  bool has_version_patch() const;
  void clear_version_patch() ;
  ::uint32_t version_patch() const;
  void set_version_patch(::uint32_t value);

  private:
  ::uint32_t _internal_version_patch() const;
  void _internal_set_version_patch(::uint32_t value);

  public:
  // required uint32 protobuf_version_maj = 5;
  bool has_protobuf_version_maj() const;
  void clear_protobuf_version_maj() ;
  ::uint32_t protobuf_version_maj() const;
  void set_protobuf_version_maj(::uint32_t value);

  private:
  ::uint32_t _internal_protobuf_version_maj() const;
  void _internal_set_protobuf_version_maj(::uint32_t value);

  public:
  // required uint32 protobuf_version_min = 6;
  bool has_protobuf_version_min() const;
  void clear_protobuf_version_min() ;
  ::uint32_t protobuf_version_min() const;
  void set_protobuf_version_min(::uint32_t value);

  private:
  ::uint32_t _internal_protobuf_version_min() const;
  void _internal_set_protobuf_version_min(::uint32_t value);

  public:
  // required uint32 protobuf_version_patch = 7;
  bool has_protobuf_version_patch() const;
  void clear_protobuf_version_patch() ;
  ::uint32_t protobuf_version_patch() const;
  void set_protobuf_version_patch(::uint32_t value);

  private:
  ::uint32_t _internal_protobuf_version_patch() const;
  void _internal_set_protobuf_version_patch(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.Header)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 7,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Header& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr version_str_;
    ::uint32_t version_maj_;
    ::uint32_t version_min_;
    ::uint32_t version_patch_;
    ::uint32_t protobuf_version_maj_;
    ::uint32_t protobuf_version_min_;
    ::uint32_t protobuf_version_patch_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Header_class_data_;
// -------------------------------------------------------------------

class GenRunInfoData final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.GenRunInfoData) */ {
 public:
  inline GenRunInfoData() : GenRunInfoData(nullptr) {}
  ~GenRunInfoData() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(GenRunInfoData* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(GenRunInfoData));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR GenRunInfoData(::google::protobuf::internal::ConstantInitialized);

  inline GenRunInfoData(const GenRunInfoData& from) : GenRunInfoData(nullptr, from) {}
  inline GenRunInfoData(GenRunInfoData&& from) noexcept
      : GenRunInfoData(nullptr, ::std::move(from)) {}
  inline GenRunInfoData& operator=(const GenRunInfoData& from) {
    CopyFrom(from);
    return *this;
  }
  inline GenRunInfoData& operator=(GenRunInfoData&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GenRunInfoData& default_instance() {
    return *reinterpret_cast<const GenRunInfoData*>(
        &_GenRunInfoData_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(GenRunInfoData& a, GenRunInfoData& b) { a.Swap(&b); }
  inline void Swap(GenRunInfoData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GenRunInfoData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GenRunInfoData* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GenRunInfoData>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GenRunInfoData& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GenRunInfoData& from) { GenRunInfoData::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(GenRunInfoData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.GenRunInfoData"; }

  explicit GenRunInfoData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GenRunInfoData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GenRunInfoData& from);
  GenRunInfoData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GenRunInfoData&& from) noexcept
      : GenRunInfoData(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kWeightNamesFieldNumber = 1,
    kToolNameFieldNumber = 2,
    kToolVersionFieldNumber = 3,
    kToolDescriptionFieldNumber = 4,
    kAttributeNameFieldNumber = 5,
    kAttributeStringFieldNumber = 6,
  };
  // repeated string weight_names = 1;
  int weight_names_size() const;
  private:
  int _internal_weight_names_size() const;

  public:
  void clear_weight_names() ;
  const ::std::string& weight_names(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_weight_names(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_weight_names(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_weight_names();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_weight_names(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& weight_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_weight_names();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_weight_names() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_weight_names();

  public:
  // repeated string tool_name = 2;
  int tool_name_size() const;
  private:
  int _internal_tool_name_size() const;

  public:
  void clear_tool_name() ;
  const ::std::string& tool_name(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_tool_name(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tool_name(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_tool_name();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_tool_name(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& tool_name() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_tool_name();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_tool_name() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_tool_name();

  public:
  // repeated string tool_version = 3;
  int tool_version_size() const;
  private:
  int _internal_tool_version_size() const;

  public:
  void clear_tool_version() ;
  const ::std::string& tool_version(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_tool_version(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tool_version(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_tool_version();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_tool_version(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& tool_version() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_tool_version();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_tool_version() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_tool_version();

  public:
  // repeated string tool_description = 4;
  int tool_description_size() const;
  private:
  int _internal_tool_description_size() const;

  public:
  void clear_tool_description() ;
  const ::std::string& tool_description(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_tool_description(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tool_description(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_tool_description();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_tool_description(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& tool_description() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_tool_description();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_tool_description() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_tool_description();

  public:
  // repeated string attribute_name = 5;
  int attribute_name_size() const;
  private:
  int _internal_attribute_name_size() const;

  public:
  void clear_attribute_name() ;
  const ::std::string& attribute_name(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_attribute_name(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_attribute_name(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_attribute_name();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_attribute_name(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& attribute_name() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_attribute_name();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_attribute_name() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_attribute_name();

  public:
  // repeated string attribute_string = 6;
  int attribute_string_size() const;
  private:
  int _internal_attribute_string_size() const;

  public:
  void clear_attribute_string() ;
  const ::std::string& attribute_string(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_attribute_string(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_attribute_string(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_attribute_string();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_attribute_string(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& attribute_string() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_attribute_string();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_attribute_string() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_attribute_string();

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.GenRunInfoData)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 6,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const GenRunInfoData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> weight_names_;
    ::google::protobuf::RepeatedPtrField<::std::string> tool_name_;
    ::google::protobuf::RepeatedPtrField<::std::string> tool_version_;
    ::google::protobuf::RepeatedPtrField<::std::string> tool_description_;
    ::google::protobuf::RepeatedPtrField<::std::string> attribute_name_;
    ::google::protobuf::RepeatedPtrField<::std::string> attribute_string_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull GenRunInfoData_class_data_;
// -------------------------------------------------------------------

class FourVector final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.FourVector) */ {
 public:
  inline FourVector() : FourVector(nullptr) {}
  ~FourVector() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FourVector* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FourVector));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR FourVector(::google::protobuf::internal::ConstantInitialized);

  inline FourVector(const FourVector& from) : FourVector(nullptr, from) {}
  inline FourVector(FourVector&& from) noexcept
      : FourVector(nullptr, ::std::move(from)) {}
  inline FourVector& operator=(const FourVector& from) {
    CopyFrom(from);
    return *this;
  }
  inline FourVector& operator=(FourVector&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const FourVector& default_instance() {
    return *reinterpret_cast<const FourVector*>(
        &_FourVector_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(FourVector& a, FourVector& b) { a.Swap(&b); }
  inline void Swap(FourVector* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FourVector* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  FourVector* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FourVector>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FourVector& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FourVector& from) { FourVector::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FourVector* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.FourVector"; }

  explicit FourVector(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FourVector(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FourVector& from);
  FourVector(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FourVector&& from) noexcept
      : FourVector(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMV1FieldNumber = 1,
    kMV2FieldNumber = 2,
    kMV3FieldNumber = 3,
    kMV4FieldNumber = 4,
  };
  // required double m_v1 = 1;
  bool has_m_v1() const;
  void clear_m_v1() ;
  double m_v1() const;
  void set_m_v1(double value);

  private:
  double _internal_m_v1() const;
  void _internal_set_m_v1(double value);

  public:
  // required double m_v2 = 2;
  bool has_m_v2() const;
  void clear_m_v2() ;
  double m_v2() const;
  void set_m_v2(double value);

  private:
  double _internal_m_v2() const;
  void _internal_set_m_v2(double value);

  public:
  // required double m_v3 = 3;
  bool has_m_v3() const;
  void clear_m_v3() ;
  double m_v3() const;
  void set_m_v3(double value);

  private:
  double _internal_m_v3() const;
  void _internal_set_m_v3(double value);

  public:
  // required double m_v4 = 4;
  bool has_m_v4() const;
  void clear_m_v4() ;
  double m_v4() const;
  void set_m_v4(double value);

  private:
  double _internal_m_v4() const;
  void _internal_set_m_v4(double value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.FourVector)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 4,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FourVector& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    double m_v1_;
    double m_v2_;
    double m_v3_;
    double m_v4_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull FourVector_class_data_;
// -------------------------------------------------------------------

class Footer final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.Footer) */ {
 public:
  inline Footer() : Footer(nullptr) {}
  ~Footer() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Footer* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Footer));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Footer(::google::protobuf::internal::ConstantInitialized);

  inline Footer(const Footer& from) : Footer(nullptr, from) {}
  inline Footer(Footer&& from) noexcept
      : Footer(nullptr, ::std::move(from)) {}
  inline Footer& operator=(const Footer& from) {
    CopyFrom(from);
    return *this;
  }
  inline Footer& operator=(Footer&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Footer& default_instance() {
    return *reinterpret_cast<const Footer*>(
        &_Footer_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(Footer& a, Footer& b) { a.Swap(&b); }
  inline void Swap(Footer* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Footer* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Footer* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Footer>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Footer& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Footer& from) { Footer::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Footer* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.Footer"; }

  explicit Footer(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Footer(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Footer& from);
  Footer(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Footer&& from) noexcept
      : Footer(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEventBytesWrittenFieldNumber = 2,
    kNeventsFieldNumber = 1,
  };
  // required uint64 event_bytes_written = 2;
  bool has_event_bytes_written() const;
  void clear_event_bytes_written() ;
  ::uint64_t event_bytes_written() const;
  void set_event_bytes_written(::uint64_t value);

  private:
  ::uint64_t _internal_event_bytes_written() const;
  void _internal_set_event_bytes_written(::uint64_t value);

  public:
  // required uint32 nevents = 1;
  bool has_nevents() const;
  void clear_nevents() ;
  ::uint32_t nevents() const;
  void set_nevents(::uint32_t value);

  private:
  ::uint32_t _internal_nevents() const;
  void _internal_set_nevents(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.Footer)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Footer& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t event_bytes_written_;
    ::uint32_t nevents_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Footer_class_data_;
// -------------------------------------------------------------------

class GenEventData_GenVertexData final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.GenEventData.GenVertexData) */ {
 public:
  inline GenEventData_GenVertexData() : GenEventData_GenVertexData(nullptr) {}
  ~GenEventData_GenVertexData() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(GenEventData_GenVertexData* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(GenEventData_GenVertexData));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR GenEventData_GenVertexData(::google::protobuf::internal::ConstantInitialized);

  inline GenEventData_GenVertexData(const GenEventData_GenVertexData& from) : GenEventData_GenVertexData(nullptr, from) {}
  inline GenEventData_GenVertexData(GenEventData_GenVertexData&& from) noexcept
      : GenEventData_GenVertexData(nullptr, ::std::move(from)) {}
  inline GenEventData_GenVertexData& operator=(const GenEventData_GenVertexData& from) {
    CopyFrom(from);
    return *this;
  }
  inline GenEventData_GenVertexData& operator=(GenEventData_GenVertexData&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GenEventData_GenVertexData& default_instance() {
    return *reinterpret_cast<const GenEventData_GenVertexData*>(
        &_GenEventData_GenVertexData_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(GenEventData_GenVertexData& a, GenEventData_GenVertexData& b) { a.Swap(&b); }
  inline void Swap(GenEventData_GenVertexData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GenEventData_GenVertexData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GenEventData_GenVertexData* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GenEventData_GenVertexData>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GenEventData_GenVertexData& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GenEventData_GenVertexData& from) { GenEventData_GenVertexData::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(GenEventData_GenVertexData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.GenEventData.GenVertexData"; }

  explicit GenEventData_GenVertexData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GenEventData_GenVertexData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GenEventData_GenVertexData& from);
  GenEventData_GenVertexData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GenEventData_GenVertexData&& from) noexcept
      : GenEventData_GenVertexData(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPositionFieldNumber = 2,
    kStatusFieldNumber = 1,
  };
  // required .HepMC3_pb.FourVector position = 2;
  bool has_position() const;
  void clear_position() ;
  const ::HepMC3_pb::FourVector& position() const;
  [[nodiscard]] ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE release_position();
  ::HepMC3_pb::FourVector* PROTOBUF_NONNULL mutable_position();
  void set_allocated_position(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_position(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value);
  ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE unsafe_arena_release_position();

  private:
  const ::HepMC3_pb::FourVector& _internal_position() const;
  ::HepMC3_pb::FourVector* PROTOBUF_NONNULL _internal_mutable_position();

  public:
  // required int32 status = 1;
  bool has_status() const;
  void clear_status() ;
  ::int32_t status() const;
  void set_status(::int32_t value);

  private:
  ::int32_t _internal_status() const;
  void _internal_set_status(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.GenEventData.GenVertexData)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const GenEventData_GenVertexData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE position_;
    ::int32_t status_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull GenEventData_GenVertexData_class_data_;
// -------------------------------------------------------------------

class GenEventData_GenParticleData final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.GenEventData.GenParticleData) */ {
 public:
  inline GenEventData_GenParticleData() : GenEventData_GenParticleData(nullptr) {}
  ~GenEventData_GenParticleData() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(GenEventData_GenParticleData* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(GenEventData_GenParticleData));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR GenEventData_GenParticleData(::google::protobuf::internal::ConstantInitialized);

  inline GenEventData_GenParticleData(const GenEventData_GenParticleData& from) : GenEventData_GenParticleData(nullptr, from) {}
  inline GenEventData_GenParticleData(GenEventData_GenParticleData&& from) noexcept
      : GenEventData_GenParticleData(nullptr, ::std::move(from)) {}
  inline GenEventData_GenParticleData& operator=(const GenEventData_GenParticleData& from) {
    CopyFrom(from);
    return *this;
  }
  inline GenEventData_GenParticleData& operator=(GenEventData_GenParticleData&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GenEventData_GenParticleData& default_instance() {
    return *reinterpret_cast<const GenEventData_GenParticleData*>(
        &_GenEventData_GenParticleData_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(GenEventData_GenParticleData& a, GenEventData_GenParticleData& b) { a.Swap(&b); }
  inline void Swap(GenEventData_GenParticleData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GenEventData_GenParticleData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GenEventData_GenParticleData* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GenEventData_GenParticleData>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GenEventData_GenParticleData& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GenEventData_GenParticleData& from) { GenEventData_GenParticleData::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(GenEventData_GenParticleData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.GenEventData.GenParticleData"; }

  explicit GenEventData_GenParticleData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GenEventData_GenParticleData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GenEventData_GenParticleData& from);
  GenEventData_GenParticleData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GenEventData_GenParticleData&& from) noexcept
      : GenEventData_GenParticleData(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMomentumFieldNumber = 5,
    kPidFieldNumber = 1,
    kStatusFieldNumber = 2,
    kMassFieldNumber = 4,
    kIsMassSetFieldNumber = 3,
  };
  // required .HepMC3_pb.FourVector momentum = 5;
  bool has_momentum() const;
  void clear_momentum() ;
  const ::HepMC3_pb::FourVector& momentum() const;
  [[nodiscard]] ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE release_momentum();
  ::HepMC3_pb::FourVector* PROTOBUF_NONNULL mutable_momentum();
  void set_allocated_momentum(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_momentum(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value);
  ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE unsafe_arena_release_momentum();

  private:
  const ::HepMC3_pb::FourVector& _internal_momentum() const;
  ::HepMC3_pb::FourVector* PROTOBUF_NONNULL _internal_mutable_momentum();

  public:
  // required int32 pid = 1;
  bool has_pid() const;
  void clear_pid() ;
  ::int32_t pid() const;
  void set_pid(::int32_t value);

  private:
  ::int32_t _internal_pid() const;
  void _internal_set_pid(::int32_t value);

  public:
  // required int32 status = 2;
  bool has_status() const;
  void clear_status() ;
  ::int32_t status() const;
  void set_status(::int32_t value);

  private:
  ::int32_t _internal_status() const;
  void _internal_set_status(::int32_t value);

  public:
  // required double mass = 4;
  bool has_mass() const;
  void clear_mass() ;
  double mass() const;
  void set_mass(double value);

  private:
  double _internal_mass() const;
  void _internal_set_mass(double value);

  public:
  // required bool is_mass_set = 3;
  bool has_is_mass_set() const;
  void clear_is_mass_set() ;
  bool is_mass_set() const;
  void set_is_mass_set(bool value);

  private:
  bool _internal_is_mass_set() const;
  void _internal_set_is_mass_set(bool value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.GenEventData.GenParticleData)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<3, 5,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const GenEventData_GenParticleData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE momentum_;
    ::int32_t pid_;
    ::int32_t status_;
    double mass_;
    bool is_mass_set_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull GenEventData_GenParticleData_class_data_;
// -------------------------------------------------------------------

class GenEventData final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:HepMC3_pb.GenEventData) */ {
 public:
  inline GenEventData() : GenEventData(nullptr) {}
  ~GenEventData() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(GenEventData* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(GenEventData));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR GenEventData(::google::protobuf::internal::ConstantInitialized);

  inline GenEventData(const GenEventData& from) : GenEventData(nullptr, from) {}
  inline GenEventData(GenEventData&& from) noexcept
      : GenEventData(nullptr, ::std::move(from)) {}
  inline GenEventData& operator=(const GenEventData& from) {
    CopyFrom(from);
    return *this;
  }
  inline GenEventData& operator=(GenEventData&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const GenEventData& default_instance() {
    return *reinterpret_cast<const GenEventData*>(
        &_GenEventData_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(GenEventData& a, GenEventData& b) { a.Swap(&b); }
  inline void Swap(GenEventData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GenEventData* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  GenEventData* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<GenEventData>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const GenEventData& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const GenEventData& from) { GenEventData::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return IsInitializedImpl(*this);
  }

  private:
  static bool IsInitializedImpl(const MessageLite& msg);

  public:
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(GenEventData* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "HepMC3_pb.GenEventData"; }

  explicit GenEventData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GenEventData(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GenEventData& from);
  GenEventData(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GenEventData&& from) noexcept
      : GenEventData(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using GenParticleData = GenEventData_GenParticleData;
  using GenVertexData = GenEventData_GenVertexData;
  using MomentumUnit = GenEventData_MomentumUnit;
  static constexpr MomentumUnit GEV = GenEventData_MomentumUnit_GEV;
  static constexpr MomentumUnit MEV = GenEventData_MomentumUnit_MEV;
  static inline bool MomentumUnit_IsValid(int value) {
    return GenEventData_MomentumUnit_IsValid(value);
  }
  static constexpr MomentumUnit MomentumUnit_MIN = GenEventData_MomentumUnit_MomentumUnit_MIN;
  static constexpr MomentumUnit MomentumUnit_MAX = GenEventData_MomentumUnit_MomentumUnit_MAX;
  static constexpr int MomentumUnit_ARRAYSIZE = GenEventData_MomentumUnit_MomentumUnit_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL MomentumUnit_descriptor() {
    return GenEventData_MomentumUnit_descriptor();
  }
  template <typename T>
  static inline const ::std::string& MomentumUnit_Name(T value) {
    return GenEventData_MomentumUnit_Name(value);
  }
  static inline bool MomentumUnit_Parse(
      ::absl::string_view name, MomentumUnit* PROTOBUF_NONNULL value) {
    return GenEventData_MomentumUnit_Parse(name, value);
  }
  using LengthUnit = GenEventData_LengthUnit;
  static constexpr LengthUnit MM = GenEventData_LengthUnit_MM;
  static constexpr LengthUnit CM = GenEventData_LengthUnit_CM;
  static inline bool LengthUnit_IsValid(int value) {
    return GenEventData_LengthUnit_IsValid(value);
  }
  static constexpr LengthUnit LengthUnit_MIN = GenEventData_LengthUnit_LengthUnit_MIN;
  static constexpr LengthUnit LengthUnit_MAX = GenEventData_LengthUnit_LengthUnit_MAX;
  static constexpr int LengthUnit_ARRAYSIZE = GenEventData_LengthUnit_LengthUnit_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL LengthUnit_descriptor() {
    return GenEventData_LengthUnit_descriptor();
  }
  template <typename T>
  static inline const ::std::string& LengthUnit_Name(T value) {
    return GenEventData_LengthUnit_Name(value);
  }
  static inline bool LengthUnit_Parse(
      ::absl::string_view name, LengthUnit* PROTOBUF_NONNULL value) {
    return GenEventData_LengthUnit_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kParticlesFieldNumber = 4,
    kVerticesFieldNumber = 5,
    kWeightsFieldNumber = 6,
    kLinks1FieldNumber = 8,
    kLinks2FieldNumber = 9,
    kAttributeIdFieldNumber = 10,
    kAttributeNameFieldNumber = 11,
    kAttributeStringFieldNumber = 12,
    kEventPosFieldNumber = 7,
    kEventNumberFieldNumber = 1,
    kMomentumUnitFieldNumber = 2,
    kLengthUnitFieldNumber = 3,
  };
  // repeated .HepMC3_pb.GenEventData.GenParticleData particles = 4;
  int particles_size() const;
  private:
  int _internal_particles_size() const;

  public:
  void clear_particles() ;
  ::HepMC3_pb::GenEventData_GenParticleData* PROTOBUF_NONNULL mutable_particles(int index);
  ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>* PROTOBUF_NONNULL mutable_particles();

  private:
  const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>& _internal_particles() const;
  ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>* PROTOBUF_NONNULL _internal_mutable_particles();
  public:
  const ::HepMC3_pb::GenEventData_GenParticleData& particles(int index) const;
  ::HepMC3_pb::GenEventData_GenParticleData* PROTOBUF_NONNULL add_particles();
  const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>& particles() const;
  // repeated .HepMC3_pb.GenEventData.GenVertexData vertices = 5;
  int vertices_size() const;
  private:
  int _internal_vertices_size() const;

  public:
  void clear_vertices() ;
  ::HepMC3_pb::GenEventData_GenVertexData* PROTOBUF_NONNULL mutable_vertices(int index);
  ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>* PROTOBUF_NONNULL mutable_vertices();

  private:
  const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>& _internal_vertices() const;
  ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>* PROTOBUF_NONNULL _internal_mutable_vertices();
  public:
  const ::HepMC3_pb::GenEventData_GenVertexData& vertices(int index) const;
  ::HepMC3_pb::GenEventData_GenVertexData* PROTOBUF_NONNULL add_vertices();
  const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>& vertices() const;
  // repeated double weights = 6;
  int weights_size() const;
  private:
  int _internal_weights_size() const;

  public:
  void clear_weights() ;
  double weights(int index) const;
  void set_weights(int index, double value);
  void add_weights(double value);
  const ::google::protobuf::RepeatedField<double>& weights() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL mutable_weights();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_weights() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL _internal_mutable_weights();

  public:
  // repeated int32 links1 = 8;
  int links1_size() const;
  private:
  int _internal_links1_size() const;

  public:
  void clear_links1() ;
  ::int32_t links1(int index) const;
  void set_links1(int index, ::int32_t value);
  void add_links1(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& links1() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_links1();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_links1() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_links1();

  public:
  // repeated int32 links2 = 9;
  int links2_size() const;
  private:
  int _internal_links2_size() const;

  public:
  void clear_links2() ;
  ::int32_t links2(int index) const;
  void set_links2(int index, ::int32_t value);
  void add_links2(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& links2() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_links2();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_links2() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_links2();

  public:
  // repeated int32 attribute_id = 10;
  int attribute_id_size() const;
  private:
  int _internal_attribute_id_size() const;

  public:
  void clear_attribute_id() ;
  ::int32_t attribute_id(int index) const;
  void set_attribute_id(int index, ::int32_t value);
  void add_attribute_id(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& attribute_id() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_attribute_id();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_attribute_id() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_attribute_id();

  public:
  // repeated string attribute_name = 11;
  int attribute_name_size() const;
  private:
  int _internal_attribute_name_size() const;

  public:
  void clear_attribute_name() ;
  const ::std::string& attribute_name(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_attribute_name(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_attribute_name(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_attribute_name();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_attribute_name(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& attribute_name() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_attribute_name();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_attribute_name() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_attribute_name();

  public:
  // repeated string attribute_string = 12;
  int attribute_string_size() const;
  private:
  int _internal_attribute_string_size() const;

  public:
  void clear_attribute_string() ;
  const ::std::string& attribute_string(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_attribute_string(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_attribute_string(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_attribute_string();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_attribute_string(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& attribute_string() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_attribute_string();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_attribute_string() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_attribute_string();

  public:
  // required .HepMC3_pb.FourVector event_pos = 7;
  bool has_event_pos() const;
  void clear_event_pos() ;
  const ::HepMC3_pb::FourVector& event_pos() const;
  [[nodiscard]] ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE release_event_pos();
  ::HepMC3_pb::FourVector* PROTOBUF_NONNULL mutable_event_pos();
  void set_allocated_event_pos(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_event_pos(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value);
  ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE unsafe_arena_release_event_pos();

  private:
  const ::HepMC3_pb::FourVector& _internal_event_pos() const;
  ::HepMC3_pb::FourVector* PROTOBUF_NONNULL _internal_mutable_event_pos();

  public:
  // required int32 event_number = 1;
  bool has_event_number() const;
  void clear_event_number() ;
  ::int32_t event_number() const;
  void set_event_number(::int32_t value);

  private:
  ::int32_t _internal_event_number() const;
  void _internal_set_event_number(::int32_t value);

  public:
  // required .HepMC3_pb.GenEventData.MomentumUnit momentum_unit = 2;
  bool has_momentum_unit() const;
  void clear_momentum_unit() ;
  ::HepMC3_pb::GenEventData_MomentumUnit momentum_unit() const;
  void set_momentum_unit(::HepMC3_pb::GenEventData_MomentumUnit value);

  private:
  ::HepMC3_pb::GenEventData_MomentumUnit _internal_momentum_unit() const;
  void _internal_set_momentum_unit(::HepMC3_pb::GenEventData_MomentumUnit value);

  public:
  // required .HepMC3_pb.GenEventData.LengthUnit length_unit = 3;
  bool has_length_unit() const;
  void clear_length_unit() ;
  ::HepMC3_pb::GenEventData_LengthUnit length_unit() const;
  void set_length_unit(::HepMC3_pb::GenEventData_LengthUnit value);

  private:
  ::HepMC3_pb::GenEventData_LengthUnit _internal_length_unit() const;
  void _internal_set_length_unit(::HepMC3_pb::GenEventData_LengthUnit value);

  public:
  // @@protoc_insertion_point(class_scope:HepMC3_pb.GenEventData)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<4, 12,
                                   5, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const GenEventData& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::HepMC3_pb::GenEventData_GenParticleData > particles_;
    ::google::protobuf::RepeatedPtrField< ::HepMC3_pb::GenEventData_GenVertexData > vertices_;
    ::google::protobuf::RepeatedField<double> weights_;
    ::google::protobuf::RepeatedField<::int32_t> links1_;
    ::google::protobuf::RepeatedField<::int32_t> links2_;
    ::google::protobuf::RepeatedField<::int32_t> attribute_id_;
    ::google::protobuf::RepeatedPtrField<::std::string> attribute_name_;
    ::google::protobuf::RepeatedPtrField<::std::string> attribute_string_;
    ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE event_pos_;
    ::int32_t event_number_;
    int momentum_unit_;
    int length_unit_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_HepMC3_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull GenEventData_class_data_;

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// Header

// required string version_str = 1;
inline bool Header::has_version_str() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void Header::clear_version_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_str_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& Header::version_str() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.version_str)
  return _internal_version_str();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Header::set_version_str(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.version_str_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.version_str)
}
inline ::std::string* PROTOBUF_NONNULL Header::mutable_version_str()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_version_str();
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.Header.version_str)
  return _s;
}
inline const ::std::string& Header::_internal_version_str() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_str_.Get();
}
inline void Header::_internal_set_version_str(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_str_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Header::_internal_mutable_version_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.version_str_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Header::release_version_str() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:HepMC3_pb.Header.version_str)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.version_str_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.version_str_.Set("", GetArena());
  }
  return released;
}
inline void Header::set_allocated_version_str(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.version_str_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.version_str_.IsDefault()) {
    _impl_.version_str_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:HepMC3_pb.Header.version_str)
}

// required uint32 version_maj = 2;
inline bool Header::has_version_maj() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void Header::clear_version_maj() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_maj_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::uint32_t Header::version_maj() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.version_maj)
  return _internal_version_maj();
}
inline void Header::set_version_maj(::uint32_t value) {
  _internal_set_version_maj(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.version_maj)
}
inline ::uint32_t Header::_internal_version_maj() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_maj_;
}
inline void Header::_internal_set_version_maj(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_maj_ = value;
}

// required uint32 version_min = 3;
inline bool Header::has_version_min() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void Header::clear_version_min() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_min_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::uint32_t Header::version_min() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.version_min)
  return _internal_version_min();
}
inline void Header::set_version_min(::uint32_t value) {
  _internal_set_version_min(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.version_min)
}
inline ::uint32_t Header::_internal_version_min() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_min_;
}
inline void Header::_internal_set_version_min(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_min_ = value;
}

// required uint32 version_patch = 4;
inline bool Header::has_version_patch() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void Header::clear_version_patch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_patch_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::uint32_t Header::version_patch() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.version_patch)
  return _internal_version_patch();
}
inline void Header::set_version_patch(::uint32_t value) {
  _internal_set_version_patch(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.version_patch)
}
inline ::uint32_t Header::_internal_version_patch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.version_patch_;
}
inline void Header::_internal_set_version_patch(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.version_patch_ = value;
}

// required uint32 protobuf_version_maj = 5;
inline bool Header::has_protobuf_version_maj() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void Header::clear_protobuf_version_maj() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protobuf_version_maj_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::uint32_t Header::protobuf_version_maj() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.protobuf_version_maj)
  return _internal_protobuf_version_maj();
}
inline void Header::set_protobuf_version_maj(::uint32_t value) {
  _internal_set_protobuf_version_maj(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.protobuf_version_maj)
}
inline ::uint32_t Header::_internal_protobuf_version_maj() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.protobuf_version_maj_;
}
inline void Header::_internal_set_protobuf_version_maj(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protobuf_version_maj_ = value;
}

// required uint32 protobuf_version_min = 6;
inline bool Header::has_protobuf_version_min() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void Header::clear_protobuf_version_min() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protobuf_version_min_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::uint32_t Header::protobuf_version_min() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.protobuf_version_min)
  return _internal_protobuf_version_min();
}
inline void Header::set_protobuf_version_min(::uint32_t value) {
  _internal_set_protobuf_version_min(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.protobuf_version_min)
}
inline ::uint32_t Header::_internal_protobuf_version_min() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.protobuf_version_min_;
}
inline void Header::_internal_set_protobuf_version_min(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protobuf_version_min_ = value;
}

// required uint32 protobuf_version_patch = 7;
inline bool Header::has_protobuf_version_patch() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void Header::clear_protobuf_version_patch() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protobuf_version_patch_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000040U);
}
inline ::uint32_t Header::protobuf_version_patch() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Header.protobuf_version_patch)
  return _internal_protobuf_version_patch();
}
inline void Header::set_protobuf_version_patch(::uint32_t value) {
  _internal_set_protobuf_version_patch(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Header.protobuf_version_patch)
}
inline ::uint32_t Header::_internal_protobuf_version_patch() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.protobuf_version_patch_;
}
inline void Header::_internal_set_protobuf_version_patch(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protobuf_version_patch_ = value;
}

// -------------------------------------------------------------------

// Footer

// required uint32 nevents = 1;
inline bool Footer::has_nevents() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void Footer::clear_nevents() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nevents_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::uint32_t Footer::nevents() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Footer.nevents)
  return _internal_nevents();
}
inline void Footer::set_nevents(::uint32_t value) {
  _internal_set_nevents(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Footer.nevents)
}
inline ::uint32_t Footer::_internal_nevents() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.nevents_;
}
inline void Footer::_internal_set_nevents(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.nevents_ = value;
}

// required uint64 event_bytes_written = 2;
inline bool Footer::has_event_bytes_written() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void Footer::clear_event_bytes_written() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.event_bytes_written_ = ::uint64_t{0u};
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::uint64_t Footer::event_bytes_written() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.Footer.event_bytes_written)
  return _internal_event_bytes_written();
}
inline void Footer::set_event_bytes_written(::uint64_t value) {
  _internal_set_event_bytes_written(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.Footer.event_bytes_written)
}
inline ::uint64_t Footer::_internal_event_bytes_written() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.event_bytes_written_;
}
inline void Footer::_internal_set_event_bytes_written(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.event_bytes_written_ = value;
}

// -------------------------------------------------------------------

// MessageDigest

// required fixed32 bytes = 1;
inline bool MessageDigest::has_bytes() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void MessageDigest::clear_bytes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bytes_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::uint32_t MessageDigest::bytes() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.MessageDigest.bytes)
  return _internal_bytes();
}
inline void MessageDigest::set_bytes(::uint32_t value) {
  _internal_set_bytes(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.MessageDigest.bytes)
}
inline ::uint32_t MessageDigest::_internal_bytes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bytes_;
}
inline void MessageDigest::_internal_set_bytes(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bytes_ = value;
}

// required fixed32 message_type = 2;
inline bool MessageDigest::has_message_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void MessageDigest::clear_message_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.message_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::uint32_t MessageDigest::message_type() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.MessageDigest.message_type)
  return _internal_message_type();
}
inline void MessageDigest::set_message_type(::uint32_t value) {
  _internal_set_message_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.MessageDigest.message_type)
}
inline ::uint32_t MessageDigest::_internal_message_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.message_type_;
}
inline void MessageDigest::_internal_set_message_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.message_type_ = value;
}

// -------------------------------------------------------------------

// FourVector

// required double m_v1 = 1;
inline bool FourVector::has_m_v1() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void FourVector::clear_m_v1() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v1_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline double FourVector::m_v1() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.FourVector.m_v1)
  return _internal_m_v1();
}
inline void FourVector::set_m_v1(double value) {
  _internal_set_m_v1(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.FourVector.m_v1)
}
inline double FourVector::_internal_m_v1() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.m_v1_;
}
inline void FourVector::_internal_set_m_v1(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v1_ = value;
}

// required double m_v2 = 2;
inline bool FourVector::has_m_v2() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void FourVector::clear_m_v2() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v2_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline double FourVector::m_v2() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.FourVector.m_v2)
  return _internal_m_v2();
}
inline void FourVector::set_m_v2(double value) {
  _internal_set_m_v2(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.FourVector.m_v2)
}
inline double FourVector::_internal_m_v2() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.m_v2_;
}
inline void FourVector::_internal_set_m_v2(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v2_ = value;
}

// required double m_v3 = 3;
inline bool FourVector::has_m_v3() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void FourVector::clear_m_v3() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v3_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline double FourVector::m_v3() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.FourVector.m_v3)
  return _internal_m_v3();
}
inline void FourVector::set_m_v3(double value) {
  _internal_set_m_v3(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.FourVector.m_v3)
}
inline double FourVector::_internal_m_v3() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.m_v3_;
}
inline void FourVector::_internal_set_m_v3(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v3_ = value;
}

// required double m_v4 = 4;
inline bool FourVector::has_m_v4() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void FourVector::clear_m_v4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v4_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline double FourVector::m_v4() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.FourVector.m_v4)
  return _internal_m_v4();
}
inline void FourVector::set_m_v4(double value) {
  _internal_set_m_v4(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.FourVector.m_v4)
}
inline double FourVector::_internal_m_v4() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.m_v4_;
}
inline void FourVector::_internal_set_m_v4(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.m_v4_ = value;
}

// -------------------------------------------------------------------

// GenEventData_GenParticleData

// required int32 pid = 1;
inline bool GenEventData_GenParticleData::has_pid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void GenEventData_GenParticleData::clear_pid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pid_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t GenEventData_GenParticleData::pid() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenParticleData.pid)
  return _internal_pid();
}
inline void GenEventData_GenParticleData::set_pid(::int32_t value) {
  _internal_set_pid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.GenParticleData.pid)
}
inline ::int32_t GenEventData_GenParticleData::_internal_pid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pid_;
}
inline void GenEventData_GenParticleData::_internal_set_pid(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pid_ = value;
}

// required int32 status = 2;
inline bool GenEventData_GenParticleData::has_status() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void GenEventData_GenParticleData::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int32_t GenEventData_GenParticleData::status() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenParticleData.status)
  return _internal_status();
}
inline void GenEventData_GenParticleData::set_status(::int32_t value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.GenParticleData.status)
}
inline ::int32_t GenEventData_GenParticleData::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.status_;
}
inline void GenEventData_GenParticleData::_internal_set_status(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// required bool is_mass_set = 3;
inline bool GenEventData_GenParticleData::has_is_mass_set() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void GenEventData_GenParticleData::clear_is_mass_set() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_mass_set_ = false;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline bool GenEventData_GenParticleData::is_mass_set() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenParticleData.is_mass_set)
  return _internal_is_mass_set();
}
inline void GenEventData_GenParticleData::set_is_mass_set(bool value) {
  _internal_set_is_mass_set(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.GenParticleData.is_mass_set)
}
inline bool GenEventData_GenParticleData::_internal_is_mass_set() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_mass_set_;
}
inline void GenEventData_GenParticleData::_internal_set_is_mass_set(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_mass_set_ = value;
}

// required double mass = 4;
inline bool GenEventData_GenParticleData::has_mass() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void GenEventData_GenParticleData::clear_mass() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mass_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline double GenEventData_GenParticleData::mass() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenParticleData.mass)
  return _internal_mass();
}
inline void GenEventData_GenParticleData::set_mass(double value) {
  _internal_set_mass(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.GenParticleData.mass)
}
inline double GenEventData_GenParticleData::_internal_mass() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mass_;
}
inline void GenEventData_GenParticleData::_internal_set_mass(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mass_ = value;
}

// required .HepMC3_pb.FourVector momentum = 5;
inline bool GenEventData_GenParticleData::has_momentum() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.momentum_ != nullptr);
  return value;
}
inline void GenEventData_GenParticleData::clear_momentum() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.momentum_ != nullptr) _impl_.momentum_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::HepMC3_pb::FourVector& GenEventData_GenParticleData::_internal_momentum() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::HepMC3_pb::FourVector* p = _impl_.momentum_;
  return p != nullptr ? *p : reinterpret_cast<const ::HepMC3_pb::FourVector&>(::HepMC3_pb::_FourVector_default_instance_);
}
inline const ::HepMC3_pb::FourVector& GenEventData_GenParticleData::momentum() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenParticleData.momentum)
  return _internal_momentum();
}
inline void GenEventData_GenParticleData::unsafe_arena_set_allocated_momentum(
    ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.momentum_);
  }
  _impl_.momentum_ = reinterpret_cast<::HepMC3_pb::FourVector*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:HepMC3_pb.GenEventData.GenParticleData.momentum)
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE GenEventData_GenParticleData::release_momentum() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::HepMC3_pb::FourVector* released = _impl_.momentum_;
  _impl_.momentum_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE GenEventData_GenParticleData::unsafe_arena_release_momentum() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:HepMC3_pb.GenEventData.GenParticleData.momentum)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::HepMC3_pb::FourVector* temp = _impl_.momentum_;
  _impl_.momentum_ = nullptr;
  return temp;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NONNULL GenEventData_GenParticleData::_internal_mutable_momentum() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.momentum_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::HepMC3_pb::FourVector>(GetArena());
    _impl_.momentum_ = reinterpret_cast<::HepMC3_pb::FourVector*>(p);
  }
  return _impl_.momentum_;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NONNULL GenEventData_GenParticleData::mutable_momentum()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::HepMC3_pb::FourVector* _msg = _internal_mutable_momentum();
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.GenParticleData.momentum)
  return _msg;
}
inline void GenEventData_GenParticleData::set_allocated_momentum(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.momentum_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.momentum_ = reinterpret_cast<::HepMC3_pb::FourVector*>(value);
  // @@protoc_insertion_point(field_set_allocated:HepMC3_pb.GenEventData.GenParticleData.momentum)
}

// -------------------------------------------------------------------

// GenEventData_GenVertexData

// required int32 status = 1;
inline bool GenEventData_GenVertexData::has_status() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void GenEventData_GenVertexData::clear_status() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t GenEventData_GenVertexData::status() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenVertexData.status)
  return _internal_status();
}
inline void GenEventData_GenVertexData::set_status(::int32_t value) {
  _internal_set_status(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.GenVertexData.status)
}
inline ::int32_t GenEventData_GenVertexData::_internal_status() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.status_;
}
inline void GenEventData_GenVertexData::_internal_set_status(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.status_ = value;
}

// required .HepMC3_pb.FourVector position = 2;
inline bool GenEventData_GenVertexData::has_position() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.position_ != nullptr);
  return value;
}
inline void GenEventData_GenVertexData::clear_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.position_ != nullptr) _impl_.position_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::HepMC3_pb::FourVector& GenEventData_GenVertexData::_internal_position() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::HepMC3_pb::FourVector* p = _impl_.position_;
  return p != nullptr ? *p : reinterpret_cast<const ::HepMC3_pb::FourVector&>(::HepMC3_pb::_FourVector_default_instance_);
}
inline const ::HepMC3_pb::FourVector& GenEventData_GenVertexData::position() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.GenVertexData.position)
  return _internal_position();
}
inline void GenEventData_GenVertexData::unsafe_arena_set_allocated_position(
    ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.position_);
  }
  _impl_.position_ = reinterpret_cast<::HepMC3_pb::FourVector*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:HepMC3_pb.GenEventData.GenVertexData.position)
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE GenEventData_GenVertexData::release_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::HepMC3_pb::FourVector* released = _impl_.position_;
  _impl_.position_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE GenEventData_GenVertexData::unsafe_arena_release_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:HepMC3_pb.GenEventData.GenVertexData.position)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::HepMC3_pb::FourVector* temp = _impl_.position_;
  _impl_.position_ = nullptr;
  return temp;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NONNULL GenEventData_GenVertexData::_internal_mutable_position() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.position_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::HepMC3_pb::FourVector>(GetArena());
    _impl_.position_ = reinterpret_cast<::HepMC3_pb::FourVector*>(p);
  }
  return _impl_.position_;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NONNULL GenEventData_GenVertexData::mutable_position()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::HepMC3_pb::FourVector* _msg = _internal_mutable_position();
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.GenVertexData.position)
  return _msg;
}
inline void GenEventData_GenVertexData::set_allocated_position(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.position_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.position_ = reinterpret_cast<::HepMC3_pb::FourVector*>(value);
  // @@protoc_insertion_point(field_set_allocated:HepMC3_pb.GenEventData.GenVertexData.position)
}

// -------------------------------------------------------------------

// GenEventData

// required int32 event_number = 1;
inline bool GenEventData::has_event_number() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000200U);
  return value;
}
inline void GenEventData::clear_event_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.event_number_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000200U);
}
inline ::int32_t GenEventData::event_number() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.event_number)
  return _internal_event_number();
}
inline void GenEventData::set_event_number(::int32_t value) {
  _internal_set_event_number(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.event_number)
}
inline ::int32_t GenEventData::_internal_event_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.event_number_;
}
inline void GenEventData::_internal_set_event_number(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.event_number_ = value;
}

// required .HepMC3_pb.GenEventData.MomentumUnit momentum_unit = 2;
inline bool GenEventData::has_momentum_unit() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000400U);
  return value;
}
inline void GenEventData::clear_momentum_unit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.momentum_unit_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000400U);
}
inline ::HepMC3_pb::GenEventData_MomentumUnit GenEventData::momentum_unit() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.momentum_unit)
  return _internal_momentum_unit();
}
inline void GenEventData::set_momentum_unit(::HepMC3_pb::GenEventData_MomentumUnit value) {
  _internal_set_momentum_unit(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.momentum_unit)
}
inline ::HepMC3_pb::GenEventData_MomentumUnit GenEventData::_internal_momentum_unit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::HepMC3_pb::GenEventData_MomentumUnit>(_impl_.momentum_unit_);
}
inline void GenEventData::_internal_set_momentum_unit(::HepMC3_pb::GenEventData_MomentumUnit value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::HepMC3_pb::GenEventData_MomentumUnit_internal_data_));
                                          _impl_.momentum_unit_ = value;
}

// required .HepMC3_pb.GenEventData.LengthUnit length_unit = 3;
inline bool GenEventData::has_length_unit() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000800U);
  return value;
}
inline void GenEventData::clear_length_unit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_unit_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000800U);
}
inline ::HepMC3_pb::GenEventData_LengthUnit GenEventData::length_unit() const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.length_unit)
  return _internal_length_unit();
}
inline void GenEventData::set_length_unit(::HepMC3_pb::GenEventData_LengthUnit value) {
  _internal_set_length_unit(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.length_unit)
}
inline ::HepMC3_pb::GenEventData_LengthUnit GenEventData::_internal_length_unit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::HepMC3_pb::GenEventData_LengthUnit>(_impl_.length_unit_);
}
inline void GenEventData::_internal_set_length_unit(::HepMC3_pb::GenEventData_LengthUnit value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);

                                          assert(::google::protobuf::internal::ValidateEnum(
                                              value, ::HepMC3_pb::GenEventData_LengthUnit_internal_data_));
                                          _impl_.length_unit_ = value;
}

// repeated .HepMC3_pb.GenEventData.GenParticleData particles = 4;
inline int GenEventData::_internal_particles_size() const {
  return _internal_particles().size();
}
inline int GenEventData::particles_size() const {
  return _internal_particles_size();
}
inline void GenEventData::clear_particles() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.particles_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::HepMC3_pb::GenEventData_GenParticleData* PROTOBUF_NONNULL GenEventData::mutable_particles(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.particles)
  return _internal_mutable_particles()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>* PROTOBUF_NONNULL GenEventData::mutable_particles()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.particles)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_particles();
}
inline const ::HepMC3_pb::GenEventData_GenParticleData& GenEventData::particles(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.particles)
  return _internal_particles().Get(index);
}
inline ::HepMC3_pb::GenEventData_GenParticleData* PROTOBUF_NONNULL GenEventData::add_particles()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::HepMC3_pb::GenEventData_GenParticleData* _add =
      _internal_mutable_particles()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.particles)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>& GenEventData::particles() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.particles)
  return _internal_particles();
}
inline const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>&
GenEventData::_internal_particles() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.particles_;
}
inline ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenParticleData>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_particles() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.particles_;
}

// repeated .HepMC3_pb.GenEventData.GenVertexData vertices = 5;
inline int GenEventData::_internal_vertices_size() const {
  return _internal_vertices().size();
}
inline int GenEventData::vertices_size() const {
  return _internal_vertices_size();
}
inline void GenEventData::clear_vertices() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.vertices_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::HepMC3_pb::GenEventData_GenVertexData* PROTOBUF_NONNULL GenEventData::mutable_vertices(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.vertices)
  return _internal_mutable_vertices()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>* PROTOBUF_NONNULL GenEventData::mutable_vertices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.vertices)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_vertices();
}
inline const ::HepMC3_pb::GenEventData_GenVertexData& GenEventData::vertices(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.vertices)
  return _internal_vertices().Get(index);
}
inline ::HepMC3_pb::GenEventData_GenVertexData* PROTOBUF_NONNULL GenEventData::add_vertices()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::HepMC3_pb::GenEventData_GenVertexData* _add =
      _internal_mutable_vertices()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.vertices)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>& GenEventData::vertices() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.vertices)
  return _internal_vertices();
}
inline const ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>&
GenEventData::_internal_vertices() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.vertices_;
}
inline ::google::protobuf::RepeatedPtrField<::HepMC3_pb::GenEventData_GenVertexData>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_vertices() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.vertices_;
}

// repeated double weights = 6;
inline int GenEventData::_internal_weights_size() const {
  return _internal_weights().size();
}
inline int GenEventData::weights_size() const {
  return _internal_weights_size();
}
inline void GenEventData::clear_weights() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weights_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline double GenEventData::weights(int index) const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.weights)
  return _internal_weights().Get(index);
}
inline void GenEventData::set_weights(int index, double value) {
  _internal_mutable_weights()->Set(index, value);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.weights)
}
inline void GenEventData::add_weights(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_weights()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.weights)
}
inline const ::google::protobuf::RepeatedField<double>& GenEventData::weights() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.weights)
  return _internal_weights();
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL GenEventData::mutable_weights()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.weights)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_weights();
}
inline const ::google::protobuf::RepeatedField<double>&
GenEventData::_internal_weights() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.weights_;
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_weights() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.weights_;
}

// required .HepMC3_pb.FourVector event_pos = 7;
inline bool GenEventData::has_event_pos() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000100U);
  PROTOBUF_ASSUME(!value || _impl_.event_pos_ != nullptr);
  return value;
}
inline void GenEventData::clear_event_pos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.event_pos_ != nullptr) _impl_.event_pos_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000100U);
}
inline const ::HepMC3_pb::FourVector& GenEventData::_internal_event_pos() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::HepMC3_pb::FourVector* p = _impl_.event_pos_;
  return p != nullptr ? *p : reinterpret_cast<const ::HepMC3_pb::FourVector&>(::HepMC3_pb::_FourVector_default_instance_);
}
inline const ::HepMC3_pb::FourVector& GenEventData::event_pos() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.event_pos)
  return _internal_event_pos();
}
inline void GenEventData::unsafe_arena_set_allocated_event_pos(
    ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.event_pos_);
  }
  _impl_.event_pos_ = reinterpret_cast<::HepMC3_pb::FourVector*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:HepMC3_pb.GenEventData.event_pos)
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE GenEventData::release_event_pos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::HepMC3_pb::FourVector* released = _impl_.event_pos_;
  _impl_.event_pos_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NULLABLE GenEventData::unsafe_arena_release_event_pos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:HepMC3_pb.GenEventData.event_pos)

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::HepMC3_pb::FourVector* temp = _impl_.event_pos_;
  _impl_.event_pos_ = nullptr;
  return temp;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NONNULL GenEventData::_internal_mutable_event_pos() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.event_pos_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::HepMC3_pb::FourVector>(GetArena());
    _impl_.event_pos_ = reinterpret_cast<::HepMC3_pb::FourVector*>(p);
  }
  return _impl_.event_pos_;
}
inline ::HepMC3_pb::FourVector* PROTOBUF_NONNULL GenEventData::mutable_event_pos()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::HepMC3_pb::FourVector* _msg = _internal_mutable_event_pos();
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.event_pos)
  return _msg;
}
inline void GenEventData::set_allocated_event_pos(::HepMC3_pb::FourVector* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.event_pos_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }

  _impl_.event_pos_ = reinterpret_cast<::HepMC3_pb::FourVector*>(value);
  // @@protoc_insertion_point(field_set_allocated:HepMC3_pb.GenEventData.event_pos)
}

// repeated int32 links1 = 8;
inline int GenEventData::_internal_links1_size() const {
  return _internal_links1().size();
}
inline int GenEventData::links1_size() const {
  return _internal_links1_size();
}
inline void GenEventData::clear_links1() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.links1_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::int32_t GenEventData::links1(int index) const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.links1)
  return _internal_links1().Get(index);
}
inline void GenEventData::set_links1(int index, ::int32_t value) {
  _internal_mutable_links1()->Set(index, value);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.links1)
}
inline void GenEventData::add_links1(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_links1()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.links1)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& GenEventData::links1() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.links1)
  return _internal_links1();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL GenEventData::mutable_links1()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.links1)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_links1();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
GenEventData::_internal_links1() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.links1_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_links1() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.links1_;
}

// repeated int32 links2 = 9;
inline int GenEventData::_internal_links2_size() const {
  return _internal_links2().size();
}
inline int GenEventData::links2_size() const {
  return _internal_links2_size();
}
inline void GenEventData::clear_links2() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.links2_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::int32_t GenEventData::links2(int index) const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.links2)
  return _internal_links2().Get(index);
}
inline void GenEventData::set_links2(int index, ::int32_t value) {
  _internal_mutable_links2()->Set(index, value);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.links2)
}
inline void GenEventData::add_links2(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_links2()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.links2)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& GenEventData::links2() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.links2)
  return _internal_links2();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL GenEventData::mutable_links2()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.links2)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_links2();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
GenEventData::_internal_links2() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.links2_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_links2() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.links2_;
}

// repeated int32 attribute_id = 10;
inline int GenEventData::_internal_attribute_id_size() const {
  return _internal_attribute_id().size();
}
inline int GenEventData::attribute_id_size() const {
  return _internal_attribute_id_size();
}
inline void GenEventData::clear_attribute_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attribute_id_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::int32_t GenEventData::attribute_id(int index) const {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.attribute_id)
  return _internal_attribute_id().Get(index);
}
inline void GenEventData::set_attribute_id(int index, ::int32_t value) {
  _internal_mutable_attribute_id()->Set(index, value);
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.attribute_id)
}
inline void GenEventData::add_attribute_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_attribute_id()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.attribute_id)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& GenEventData::attribute_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.attribute_id)
  return _internal_attribute_id();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL GenEventData::mutable_attribute_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.attribute_id)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_attribute_id();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
GenEventData::_internal_attribute_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attribute_id_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_attribute_id() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.attribute_id_;
}

// repeated string attribute_name = 11;
inline int GenEventData::_internal_attribute_name_size() const {
  return _internal_attribute_name().size();
}
inline int GenEventData::attribute_name_size() const {
  return _internal_attribute_name_size();
}
inline void GenEventData::clear_attribute_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attribute_name_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000040U);
}
inline ::std::string* PROTOBUF_NONNULL GenEventData::add_attribute_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_attribute_name()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenEventData.attribute_name)
  return _s;
}
inline const ::std::string& GenEventData::attribute_name(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.attribute_name)
  return _internal_attribute_name().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenEventData::mutable_attribute_name(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.attribute_name)
  return _internal_mutable_attribute_name()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenEventData::set_attribute_name(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_attribute_name()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.attribute_name)
}
template <typename Arg_, typename... Args_>
inline void GenEventData::add_attribute_name(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_attribute_name(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.attribute_name)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenEventData::attribute_name()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.attribute_name)
  return _internal_attribute_name();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenEventData::mutable_attribute_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.attribute_name)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_attribute_name();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenEventData::_internal_attribute_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attribute_name_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_attribute_name() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.attribute_name_;
}

// repeated string attribute_string = 12;
inline int GenEventData::_internal_attribute_string_size() const {
  return _internal_attribute_string().size();
}
inline int GenEventData::attribute_string_size() const {
  return _internal_attribute_string_size();
}
inline void GenEventData::clear_attribute_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attribute_string_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000080U);
}
inline ::std::string* PROTOBUF_NONNULL GenEventData::add_attribute_string()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_attribute_string()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenEventData.attribute_string)
  return _s;
}
inline const ::std::string& GenEventData::attribute_string(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenEventData.attribute_string)
  return _internal_attribute_string().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenEventData::mutable_attribute_string(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenEventData.attribute_string)
  return _internal_mutable_attribute_string()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenEventData::set_attribute_string(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_attribute_string()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenEventData.attribute_string)
}
template <typename Arg_, typename... Args_>
inline void GenEventData::add_attribute_string(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_attribute_string(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenEventData.attribute_string)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenEventData::attribute_string()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenEventData.attribute_string)
  return _internal_attribute_string();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenEventData::mutable_attribute_string() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenEventData.attribute_string)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_attribute_string();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenEventData::_internal_attribute_string() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attribute_string_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenEventData::_internal_mutable_attribute_string() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.attribute_string_;
}

// -------------------------------------------------------------------

// GenRunInfoData

// repeated string weight_names = 1;
inline int GenRunInfoData::_internal_weight_names_size() const {
  return _internal_weight_names().size();
}
inline int GenRunInfoData::weight_names_size() const {
  return _internal_weight_names_size();
}
inline void GenRunInfoData::clear_weight_names() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weight_names_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::add_weight_names()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_weight_names()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenRunInfoData.weight_names)
  return _s;
}
inline const ::std::string& GenRunInfoData::weight_names(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenRunInfoData.weight_names)
  return _internal_weight_names().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::mutable_weight_names(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenRunInfoData.weight_names)
  return _internal_mutable_weight_names()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::set_weight_names(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_weight_names()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenRunInfoData.weight_names)
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::add_weight_names(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_weight_names(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenRunInfoData.weight_names)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenRunInfoData::weight_names()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenRunInfoData.weight_names)
  return _internal_weight_names();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::mutable_weight_names() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenRunInfoData.weight_names)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_weight_names();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenRunInfoData::_internal_weight_names() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.weight_names_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::_internal_mutable_weight_names() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.weight_names_;
}

// repeated string tool_name = 2;
inline int GenRunInfoData::_internal_tool_name_size() const {
  return _internal_tool_name().size();
}
inline int GenRunInfoData::tool_name_size() const {
  return _internal_tool_name_size();
}
inline void GenRunInfoData::clear_tool_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tool_name_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::add_tool_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_tool_name()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenRunInfoData.tool_name)
  return _s;
}
inline const ::std::string& GenRunInfoData::tool_name(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenRunInfoData.tool_name)
  return _internal_tool_name().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::mutable_tool_name(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenRunInfoData.tool_name)
  return _internal_mutable_tool_name()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::set_tool_name(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_tool_name()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenRunInfoData.tool_name)
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::add_tool_name(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_tool_name(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenRunInfoData.tool_name)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenRunInfoData::tool_name()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenRunInfoData.tool_name)
  return _internal_tool_name();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::mutable_tool_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenRunInfoData.tool_name)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tool_name();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenRunInfoData::_internal_tool_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tool_name_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::_internal_mutable_tool_name() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tool_name_;
}

// repeated string tool_version = 3;
inline int GenRunInfoData::_internal_tool_version_size() const {
  return _internal_tool_version().size();
}
inline int GenRunInfoData::tool_version_size() const {
  return _internal_tool_version_size();
}
inline void GenRunInfoData::clear_tool_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tool_version_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::add_tool_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_tool_version()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenRunInfoData.tool_version)
  return _s;
}
inline const ::std::string& GenRunInfoData::tool_version(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenRunInfoData.tool_version)
  return _internal_tool_version().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::mutable_tool_version(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenRunInfoData.tool_version)
  return _internal_mutable_tool_version()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::set_tool_version(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_tool_version()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenRunInfoData.tool_version)
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::add_tool_version(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_tool_version(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenRunInfoData.tool_version)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenRunInfoData::tool_version()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenRunInfoData.tool_version)
  return _internal_tool_version();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::mutable_tool_version() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenRunInfoData.tool_version)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tool_version();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenRunInfoData::_internal_tool_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tool_version_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::_internal_mutable_tool_version() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tool_version_;
}

// repeated string tool_description = 4;
inline int GenRunInfoData::_internal_tool_description_size() const {
  return _internal_tool_description().size();
}
inline int GenRunInfoData::tool_description_size() const {
  return _internal_tool_description_size();
}
inline void GenRunInfoData::clear_tool_description() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tool_description_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::add_tool_description()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_tool_description()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenRunInfoData.tool_description)
  return _s;
}
inline const ::std::string& GenRunInfoData::tool_description(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenRunInfoData.tool_description)
  return _internal_tool_description().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::mutable_tool_description(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenRunInfoData.tool_description)
  return _internal_mutable_tool_description()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::set_tool_description(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_tool_description()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenRunInfoData.tool_description)
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::add_tool_description(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_tool_description(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenRunInfoData.tool_description)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenRunInfoData::tool_description()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenRunInfoData.tool_description)
  return _internal_tool_description();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::mutable_tool_description() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenRunInfoData.tool_description)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tool_description();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenRunInfoData::_internal_tool_description() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tool_description_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::_internal_mutable_tool_description() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tool_description_;
}

// repeated string attribute_name = 5;
inline int GenRunInfoData::_internal_attribute_name_size() const {
  return _internal_attribute_name().size();
}
inline int GenRunInfoData::attribute_name_size() const {
  return _internal_attribute_name_size();
}
inline void GenRunInfoData::clear_attribute_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attribute_name_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000010U);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::add_attribute_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_attribute_name()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenRunInfoData.attribute_name)
  return _s;
}
inline const ::std::string& GenRunInfoData::attribute_name(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenRunInfoData.attribute_name)
  return _internal_attribute_name().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::mutable_attribute_name(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenRunInfoData.attribute_name)
  return _internal_mutable_attribute_name()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::set_attribute_name(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_attribute_name()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenRunInfoData.attribute_name)
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::add_attribute_name(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_attribute_name(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenRunInfoData.attribute_name)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenRunInfoData::attribute_name()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenRunInfoData.attribute_name)
  return _internal_attribute_name();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::mutable_attribute_name() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenRunInfoData.attribute_name)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_attribute_name();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenRunInfoData::_internal_attribute_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attribute_name_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::_internal_mutable_attribute_name() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.attribute_name_;
}

// repeated string attribute_string = 6;
inline int GenRunInfoData::_internal_attribute_string_size() const {
  return _internal_attribute_string().size();
}
inline int GenRunInfoData::attribute_string_size() const {
  return _internal_attribute_string_size();
}
inline void GenRunInfoData::clear_attribute_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attribute_string_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000020U);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::add_attribute_string()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_attribute_string()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_add_mutable:HepMC3_pb.GenRunInfoData.attribute_string)
  return _s;
}
inline const ::std::string& GenRunInfoData::attribute_string(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:HepMC3_pb.GenRunInfoData.attribute_string)
  return _internal_attribute_string().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL GenRunInfoData::mutable_attribute_string(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:HepMC3_pb.GenRunInfoData.attribute_string)
  return _internal_mutable_attribute_string()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::set_attribute_string(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_attribute_string()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:HepMC3_pb.GenRunInfoData.attribute_string)
}
template <typename Arg_, typename... Args_>
inline void GenRunInfoData::add_attribute_string(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_attribute_string(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_add:HepMC3_pb.GenRunInfoData.attribute_string)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& GenRunInfoData::attribute_string()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:HepMC3_pb.GenRunInfoData.attribute_string)
  return _internal_attribute_string();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::mutable_attribute_string() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_mutable_list:HepMC3_pb.GenRunInfoData.attribute_string)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_attribute_string();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
GenRunInfoData::_internal_attribute_string() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attribute_string_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
GenRunInfoData::_internal_mutable_attribute_string() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.attribute_string_;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace HepMC3_pb


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::HepMC3_pb::MessageDigest_MessageType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::HepMC3_pb::MessageDigest_MessageType>() {
  return ::HepMC3_pb::MessageDigest_MessageType_descriptor();
}
template <>
struct is_proto_enum<::HepMC3_pb::GenEventData_MomentumUnit> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::HepMC3_pb::GenEventData_MomentumUnit>() {
  return ::HepMC3_pb::GenEventData_MomentumUnit_descriptor();
}
template <>
struct is_proto_enum<::HepMC3_pb::GenEventData_LengthUnit> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::HepMC3_pb::GenEventData_LengthUnit>() {
  return ::HepMC3_pb::GenEventData_LengthUnit_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // HepMC3_2eproto_2epb_2eh
