Index: external/ProMC/ProMC.pb.cc
===================================================================
--- external/ProMC/ProMC.pb.cc	(revision 6b9b91f918d5107900757f5c811e8cc86596d82e)
+++ external/ProMC/ProMC.pb.cc	(revision 6b9b91f918d5107900757f5c811e8cc86596d82e)
@@ -0,0 +1,2520 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: ProMC.proto
+
+#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
+#include "ProMC.pb.h"
+
+#include <algorithm>
+
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/stubs/once.h>
+#include <google/protobuf/io/coded_stream.h>
+#include <google/protobuf/wire_format_lite_inl.h>
+#include <google/protobuf/descriptor.h>
+#include <google/protobuf/generated_message_reflection.h>
+#include <google/protobuf/reflection_ops.h>
+#include <google/protobuf/wire_format.h>
+// @@protoc_insertion_point(includes)
+
+namespace promc {
+
+namespace {
+
+const ::google::protobuf::Descriptor* ProMCEvent_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  ProMCEvent_reflection_ = NULL;
+const ::google::protobuf::Descriptor* ProMCEvent_Event_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  ProMCEvent_Event_reflection_ = NULL;
+const ::google::protobuf::Descriptor* ProMCEvent_Particles_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  ProMCEvent_Particles_reflection_ = NULL;
+
+}  // namespace
+
+
+void protobuf_AssignDesc_ProMC_2eproto() {
+  protobuf_AddDesc_ProMC_2eproto();
+  const ::google::protobuf::FileDescriptor* file =
+    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
+      "ProMC.proto");
+  GOOGLE_CHECK(file != NULL);
+  ProMCEvent_descriptor_ = file->message_type(0);
+  static const int ProMCEvent_offsets_[2] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent, event_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent, particles_),
+  };
+  ProMCEvent_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      ProMCEvent_descriptor_,
+      ProMCEvent::default_instance_,
+      ProMCEvent_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(ProMCEvent));
+  ProMCEvent_Event_descriptor_ = ProMCEvent_descriptor_->nested_type(0);
+  static const int ProMCEvent_Event_offsets_[14] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, number_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, process_id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, mpi_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, id1_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, id2_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, pdf1_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, pdf2_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, x1_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, x2_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, scale_pdf_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, alpha_qed_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, scale_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, alpha_qcd_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, weight_),
+  };
+  ProMCEvent_Event_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      ProMCEvent_Event_descriptor_,
+      ProMCEvent_Event::default_instance_,
+      ProMCEvent_Event_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Event, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(ProMCEvent_Event));
+  ProMCEvent_Particles_descriptor_ = ProMCEvent_descriptor_->nested_type(1);
+  static const int ProMCEvent_Particles_offsets_[18] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, pdg_id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, status_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, mass_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, px_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, py_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, pz_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, mother1_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, mother2_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, daughter1_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, daughter2_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, barcode_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, x_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, y_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, z_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, t_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, weight_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, charge_),
+  };
+  ProMCEvent_Particles_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      ProMCEvent_Particles_descriptor_,
+      ProMCEvent_Particles::default_instance_,
+      ProMCEvent_Particles_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ProMCEvent_Particles, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(ProMCEvent_Particles));
+}
+
+namespace {
+
+GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
+inline void protobuf_AssignDescriptorsOnce() {
+  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
+                 &protobuf_AssignDesc_ProMC_2eproto);
+}
+
+void protobuf_RegisterTypes(const ::std::string&) {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    ProMCEvent_descriptor_, &ProMCEvent::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    ProMCEvent_Event_descriptor_, &ProMCEvent_Event::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    ProMCEvent_Particles_descriptor_, &ProMCEvent_Particles::default_instance());
+}
+
+}  // namespace
+
+void protobuf_ShutdownFile_ProMC_2eproto() {
+  delete ProMCEvent::default_instance_;
+  delete ProMCEvent_reflection_;
+  delete ProMCEvent_Event::default_instance_;
+  delete ProMCEvent_Event_reflection_;
+  delete ProMCEvent_Particles::default_instance_;
+  delete ProMCEvent_Particles_reflection_;
+}
+
+void protobuf_AddDesc_ProMC_2eproto() {
+  static bool already_here = false;
+  if (already_here) return;
+  already_here = true;
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
+    "\n\013ProMC.proto\022\005promc\"\236\005\n\nProMCEvent\022&\n\005e"
+    "vent\030\001 \001(\0132\027.promc.ProMCEvent.Event\022.\n\tp"
+    "articles\030\002 \001(\0132\033.promc.ProMCEvent.Partic"
+    "les\032\336\001\n\005Event\022\016\n\006Number\030\001 \001(\005\022\022\n\nProcess"
+    "_ID\030\002 \001(\005\022\013\n\003MPI\030\003 \001(\005\022\013\n\003ID1\030\004 \001(\005\022\013\n\003I"
+    "D2\030\005 \001(\005\022\014\n\004PDF1\030\006 \001(\002\022\014\n\004PDF2\030\007 \001(\002\022\n\n\002"
+    "X1\030\010 \001(\002\022\n\n\002X2\030\t \001(\002\022\021\n\tScale_PDF\030\n \001(\002\022"
+    "\021\n\tAlpha_QED\030\013 \001(\002\022\r\n\005Scale\030\014 \001(\002\022\021\n\tAlp"
+    "ha_QCD\030\r \001(\002\022\016\n\006Weight\030\016 \001(\001\032\326\002\n\tParticl"
+    "es\022\016\n\002id\030\001 \003(\rB\002\020\001\022\022\n\006pdg_id\030\002 \003(\021B\002\020\001\022\022"
+    "\n\006status\030\003 \003(\rB\002\020\001\022\020\n\004mass\030\004 \003(\004B\002\020\001\022\016\n\002"
+    "Px\030\005 \003(\022B\002\020\001\022\016\n\002Py\030\006 \003(\022B\002\020\001\022\016\n\002Pz\030\007 \003(\022"
+    "B\002\020\001\022\023\n\007mother1\030\010 \003(\rB\002\020\001\022\023\n\007mother2\030\t \003"
+    "(\rB\002\020\001\022\025\n\tdaughter1\030\n \003(\rB\002\020\001\022\025\n\tdaughte"
+    "r2\030\013 \003(\rB\002\020\001\022\023\n\007barcode\030\014 \003(\021B\002\020\001\022\r\n\001X\030\r"
+    " \003(\021B\002\020\001\022\r\n\001Y\030\016 \003(\021B\002\020\001\022\r\n\001Z\030\017 \003(\021B\002\020\001\022\r"
+    "\n\001T\030\020 \003(\rB\002\020\001\022\022\n\006weight\030\021 \003(\004B\002\020\001\022\022\n\006cha"
+    "rge\030\022 \003(\021B\002\020\001B\021\n\010promc.ioB\005ProMC", 712);
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
+    "ProMC.proto", &protobuf_RegisterTypes);
+  ProMCEvent::default_instance_ = new ProMCEvent();
+  ProMCEvent_Event::default_instance_ = new ProMCEvent_Event();
+  ProMCEvent_Particles::default_instance_ = new ProMCEvent_Particles();
+  ProMCEvent::default_instance_->InitAsDefaultInstance();
+  ProMCEvent_Event::default_instance_->InitAsDefaultInstance();
+  ProMCEvent_Particles::default_instance_->InitAsDefaultInstance();
+  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_ProMC_2eproto);
+}
+
+// Force AddDescriptors() to be called at static initialization time.
+struct StaticDescriptorInitializer_ProMC_2eproto {
+  StaticDescriptorInitializer_ProMC_2eproto() {
+    protobuf_AddDesc_ProMC_2eproto();
+  }
+} static_descriptor_initializer_ProMC_2eproto_;
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int ProMCEvent_Event::kNumberFieldNumber;
+const int ProMCEvent_Event::kProcessIDFieldNumber;
+const int ProMCEvent_Event::kMPIFieldNumber;
+const int ProMCEvent_Event::kID1FieldNumber;
+const int ProMCEvent_Event::kID2FieldNumber;
+const int ProMCEvent_Event::kPDF1FieldNumber;
+const int ProMCEvent_Event::kPDF2FieldNumber;
+const int ProMCEvent_Event::kX1FieldNumber;
+const int ProMCEvent_Event::kX2FieldNumber;
+const int ProMCEvent_Event::kScalePDFFieldNumber;
+const int ProMCEvent_Event::kAlphaQEDFieldNumber;
+const int ProMCEvent_Event::kScaleFieldNumber;
+const int ProMCEvent_Event::kAlphaQCDFieldNumber;
+const int ProMCEvent_Event::kWeightFieldNumber;
+#endif  // !_MSC_VER
+
+ProMCEvent_Event::ProMCEvent_Event()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void ProMCEvent_Event::InitAsDefaultInstance() {
+}
+
+ProMCEvent_Event::ProMCEvent_Event(const ProMCEvent_Event& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void ProMCEvent_Event::SharedCtor() {
+  _cached_size_ = 0;
+  number_ = 0;
+  process_id_ = 0;
+  mpi_ = 0;
+  id1_ = 0;
+  id2_ = 0;
+  pdf1_ = 0;
+  pdf2_ = 0;
+  x1_ = 0;
+  x2_ = 0;
+  scale_pdf_ = 0;
+  alpha_qed_ = 0;
+  scale_ = 0;
+  alpha_qcd_ = 0;
+  weight_ = 0;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+ProMCEvent_Event::~ProMCEvent_Event() {
+  SharedDtor();
+}
+
+void ProMCEvent_Event::SharedDtor() {
+  if (this != default_instance_) {
+  }
+}
+
+void ProMCEvent_Event::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* ProMCEvent_Event::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return ProMCEvent_Event_descriptor_;
+}
+
+const ProMCEvent_Event& ProMCEvent_Event::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ProMC_2eproto();
+  return *default_instance_;
+}
+
+ProMCEvent_Event* ProMCEvent_Event::default_instance_ = NULL;
+
+ProMCEvent_Event* ProMCEvent_Event::New() const {
+  return new ProMCEvent_Event;
+}
+
+void ProMCEvent_Event::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    number_ = 0;
+    process_id_ = 0;
+    mpi_ = 0;
+    id1_ = 0;
+    id2_ = 0;
+    pdf1_ = 0;
+    pdf2_ = 0;
+    x1_ = 0;
+  }
+  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+    x2_ = 0;
+    scale_pdf_ = 0;
+    alpha_qed_ = 0;
+    scale_ = 0;
+    alpha_qcd_ = 0;
+    weight_ = 0;
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool ProMCEvent_Event::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional int32 Number = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &number_)));
+          set_has_number();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(16)) goto parse_Process_ID;
+        break;
+      }
+
+      // optional int32 Process_ID = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_Process_ID:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &process_id_)));
+          set_has_process_id();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(24)) goto parse_MPI;
+        break;
+      }
+
+      // optional int32 MPI = 3;
+      case 3: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_MPI:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &mpi_)));
+          set_has_mpi();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(32)) goto parse_ID1;
+        break;
+      }
+
+      // optional int32 ID1 = 4;
+      case 4: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_ID1:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &id1_)));
+          set_has_id1();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(40)) goto parse_ID2;
+        break;
+      }
+
+      // optional int32 ID2 = 5;
+      case 5: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_ID2:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &id2_)));
+          set_has_id2();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(53)) goto parse_PDF1;
+        break;
+      }
+
+      // optional float PDF1 = 6;
+      case 6: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_PDF1:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &pdf1_)));
+          set_has_pdf1();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(61)) goto parse_PDF2;
+        break;
+      }
+
+      // optional float PDF2 = 7;
+      case 7: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_PDF2:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &pdf2_)));
+          set_has_pdf2();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(69)) goto parse_X1;
+        break;
+      }
+
+      // optional float X1 = 8;
+      case 8: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_X1:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &x1_)));
+          set_has_x1();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(77)) goto parse_X2;
+        break;
+      }
+
+      // optional float X2 = 9;
+      case 9: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_X2:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &x2_)));
+          set_has_x2();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(85)) goto parse_Scale_PDF;
+        break;
+      }
+
+      // optional float Scale_PDF = 10;
+      case 10: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_Scale_PDF:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &scale_pdf_)));
+          set_has_scale_pdf();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(93)) goto parse_Alpha_QED;
+        break;
+      }
+
+      // optional float Alpha_QED = 11;
+      case 11: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_Alpha_QED:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &alpha_qed_)));
+          set_has_alpha_qed();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(101)) goto parse_Scale;
+        break;
+      }
+
+      // optional float Scale = 12;
+      case 12: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_Scale:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &scale_)));
+          set_has_scale();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(109)) goto parse_Alpha_QCD;
+        break;
+      }
+
+      // optional float Alpha_QCD = 13;
+      case 13: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED32) {
+         parse_Alpha_QCD:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   float, ::google::protobuf::internal::WireFormatLite::TYPE_FLOAT>(
+                 input, &alpha_qcd_)));
+          set_has_alpha_qcd();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(113)) goto parse_Weight;
+        break;
+      }
+
+      // optional double Weight = 14;
+      case 14: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_FIXED64) {
+         parse_Weight:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
+                 input, &weight_)));
+          set_has_weight();
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void ProMCEvent_Event::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional int32 Number = 1;
+  if (has_number()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->number(), output);
+  }
+
+  // optional int32 Process_ID = 2;
+  if (has_process_id()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->process_id(), output);
+  }
+
+  // optional int32 MPI = 3;
+  if (has_mpi()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(3, this->mpi(), output);
+  }
+
+  // optional int32 ID1 = 4;
+  if (has_id1()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(4, this->id1(), output);
+  }
+
+  // optional int32 ID2 = 5;
+  if (has_id2()) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(5, this->id2(), output);
+  }
+
+  // optional float PDF1 = 6;
+  if (has_pdf1()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(6, this->pdf1(), output);
+  }
+
+  // optional float PDF2 = 7;
+  if (has_pdf2()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(7, this->pdf2(), output);
+  }
+
+  // optional float X1 = 8;
+  if (has_x1()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(8, this->x1(), output);
+  }
+
+  // optional float X2 = 9;
+  if (has_x2()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(9, this->x2(), output);
+  }
+
+  // optional float Scale_PDF = 10;
+  if (has_scale_pdf()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(10, this->scale_pdf(), output);
+  }
+
+  // optional float Alpha_QED = 11;
+  if (has_alpha_qed()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(11, this->alpha_qed(), output);
+  }
+
+  // optional float Scale = 12;
+  if (has_scale()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(12, this->scale(), output);
+  }
+
+  // optional float Alpha_QCD = 13;
+  if (has_alpha_qcd()) {
+    ::google::protobuf::internal::WireFormatLite::WriteFloat(13, this->alpha_qcd(), output);
+  }
+
+  // optional double Weight = 14;
+  if (has_weight()) {
+    ::google::protobuf::internal::WireFormatLite::WriteDouble(14, this->weight(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* ProMCEvent_Event::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional int32 Number = 1;
+  if (has_number()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->number(), target);
+  }
+
+  // optional int32 Process_ID = 2;
+  if (has_process_id()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->process_id(), target);
+  }
+
+  // optional int32 MPI = 3;
+  if (has_mpi()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(3, this->mpi(), target);
+  }
+
+  // optional int32 ID1 = 4;
+  if (has_id1()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(4, this->id1(), target);
+  }
+
+  // optional int32 ID2 = 5;
+  if (has_id2()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(5, this->id2(), target);
+  }
+
+  // optional float PDF1 = 6;
+  if (has_pdf1()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(6, this->pdf1(), target);
+  }
+
+  // optional float PDF2 = 7;
+  if (has_pdf2()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(7, this->pdf2(), target);
+  }
+
+  // optional float X1 = 8;
+  if (has_x1()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(8, this->x1(), target);
+  }
+
+  // optional float X2 = 9;
+  if (has_x2()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(9, this->x2(), target);
+  }
+
+  // optional float Scale_PDF = 10;
+  if (has_scale_pdf()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(10, this->scale_pdf(), target);
+  }
+
+  // optional float Alpha_QED = 11;
+  if (has_alpha_qed()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(11, this->alpha_qed(), target);
+  }
+
+  // optional float Scale = 12;
+  if (has_scale()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(12, this->scale(), target);
+  }
+
+  // optional float Alpha_QCD = 13;
+  if (has_alpha_qcd()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteFloatToArray(13, this->alpha_qcd(), target);
+  }
+
+  // optional double Weight = 14;
+  if (has_weight()) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(14, this->weight(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int ProMCEvent_Event::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional int32 Number = 1;
+    if (has_number()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->number());
+    }
+
+    // optional int32 Process_ID = 2;
+    if (has_process_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->process_id());
+    }
+
+    // optional int32 MPI = 3;
+    if (has_mpi()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->mpi());
+    }
+
+    // optional int32 ID1 = 4;
+    if (has_id1()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->id1());
+    }
+
+    // optional int32 ID2 = 5;
+    if (has_id2()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->id2());
+    }
+
+    // optional float PDF1 = 6;
+    if (has_pdf1()) {
+      total_size += 1 + 4;
+    }
+
+    // optional float PDF2 = 7;
+    if (has_pdf2()) {
+      total_size += 1 + 4;
+    }
+
+    // optional float X1 = 8;
+    if (has_x1()) {
+      total_size += 1 + 4;
+    }
+
+  }
+  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+    // optional float X2 = 9;
+    if (has_x2()) {
+      total_size += 1 + 4;
+    }
+
+    // optional float Scale_PDF = 10;
+    if (has_scale_pdf()) {
+      total_size += 1 + 4;
+    }
+
+    // optional float Alpha_QED = 11;
+    if (has_alpha_qed()) {
+      total_size += 1 + 4;
+    }
+
+    // optional float Scale = 12;
+    if (has_scale()) {
+      total_size += 1 + 4;
+    }
+
+    // optional float Alpha_QCD = 13;
+    if (has_alpha_qcd()) {
+      total_size += 1 + 4;
+    }
+
+    // optional double Weight = 14;
+    if (has_weight()) {
+      total_size += 1 + 8;
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void ProMCEvent_Event::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const ProMCEvent_Event* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const ProMCEvent_Event*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void ProMCEvent_Event::MergeFrom(const ProMCEvent_Event& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_number()) {
+      set_number(from.number());
+    }
+    if (from.has_process_id()) {
+      set_process_id(from.process_id());
+    }
+    if (from.has_mpi()) {
+      set_mpi(from.mpi());
+    }
+    if (from.has_id1()) {
+      set_id1(from.id1());
+    }
+    if (from.has_id2()) {
+      set_id2(from.id2());
+    }
+    if (from.has_pdf1()) {
+      set_pdf1(from.pdf1());
+    }
+    if (from.has_pdf2()) {
+      set_pdf2(from.pdf2());
+    }
+    if (from.has_x1()) {
+      set_x1(from.x1());
+    }
+  }
+  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
+    if (from.has_x2()) {
+      set_x2(from.x2());
+    }
+    if (from.has_scale_pdf()) {
+      set_scale_pdf(from.scale_pdf());
+    }
+    if (from.has_alpha_qed()) {
+      set_alpha_qed(from.alpha_qed());
+    }
+    if (from.has_scale()) {
+      set_scale(from.scale());
+    }
+    if (from.has_alpha_qcd()) {
+      set_alpha_qcd(from.alpha_qcd());
+    }
+    if (from.has_weight()) {
+      set_weight(from.weight());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void ProMCEvent_Event::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ProMCEvent_Event::CopyFrom(const ProMCEvent_Event& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ProMCEvent_Event::IsInitialized() const {
+
+  return true;
+}
+
+void ProMCEvent_Event::Swap(ProMCEvent_Event* other) {
+  if (other != this) {
+    std::swap(number_, other->number_);
+    std::swap(process_id_, other->process_id_);
+    std::swap(mpi_, other->mpi_);
+    std::swap(id1_, other->id1_);
+    std::swap(id2_, other->id2_);
+    std::swap(pdf1_, other->pdf1_);
+    std::swap(pdf2_, other->pdf2_);
+    std::swap(x1_, other->x1_);
+    std::swap(x2_, other->x2_);
+    std::swap(scale_pdf_, other->scale_pdf_);
+    std::swap(alpha_qed_, other->alpha_qed_);
+    std::swap(scale_, other->scale_);
+    std::swap(alpha_qcd_, other->alpha_qcd_);
+    std::swap(weight_, other->weight_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata ProMCEvent_Event::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = ProMCEvent_Event_descriptor_;
+  metadata.reflection = ProMCEvent_Event_reflection_;
+  return metadata;
+}
+
+
+// -------------------------------------------------------------------
+
+#ifndef _MSC_VER
+const int ProMCEvent_Particles::kIdFieldNumber;
+const int ProMCEvent_Particles::kPdgIdFieldNumber;
+const int ProMCEvent_Particles::kStatusFieldNumber;
+const int ProMCEvent_Particles::kMassFieldNumber;
+const int ProMCEvent_Particles::kPxFieldNumber;
+const int ProMCEvent_Particles::kPyFieldNumber;
+const int ProMCEvent_Particles::kPzFieldNumber;
+const int ProMCEvent_Particles::kMother1FieldNumber;
+const int ProMCEvent_Particles::kMother2FieldNumber;
+const int ProMCEvent_Particles::kDaughter1FieldNumber;
+const int ProMCEvent_Particles::kDaughter2FieldNumber;
+const int ProMCEvent_Particles::kBarcodeFieldNumber;
+const int ProMCEvent_Particles::kXFieldNumber;
+const int ProMCEvent_Particles::kYFieldNumber;
+const int ProMCEvent_Particles::kZFieldNumber;
+const int ProMCEvent_Particles::kTFieldNumber;
+const int ProMCEvent_Particles::kWeightFieldNumber;
+const int ProMCEvent_Particles::kChargeFieldNumber;
+#endif  // !_MSC_VER
+
+ProMCEvent_Particles::ProMCEvent_Particles()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void ProMCEvent_Particles::InitAsDefaultInstance() {
+}
+
+ProMCEvent_Particles::ProMCEvent_Particles(const ProMCEvent_Particles& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void ProMCEvent_Particles::SharedCtor() {
+  _cached_size_ = 0;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+ProMCEvent_Particles::~ProMCEvent_Particles() {
+  SharedDtor();
+}
+
+void ProMCEvent_Particles::SharedDtor() {
+  if (this != default_instance_) {
+  }
+}
+
+void ProMCEvent_Particles::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* ProMCEvent_Particles::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return ProMCEvent_Particles_descriptor_;
+}
+
+const ProMCEvent_Particles& ProMCEvent_Particles::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ProMC_2eproto();
+  return *default_instance_;
+}
+
+ProMCEvent_Particles* ProMCEvent_Particles::default_instance_ = NULL;
+
+ProMCEvent_Particles* ProMCEvent_Particles::New() const {
+  return new ProMCEvent_Particles;
+}
+
+void ProMCEvent_Particles::Clear() {
+  id_.Clear();
+  pdg_id_.Clear();
+  status_.Clear();
+  mass_.Clear();
+  px_.Clear();
+  py_.Clear();
+  pz_.Clear();
+  mother1_.Clear();
+  mother2_.Clear();
+  daughter1_.Clear();
+  daughter2_.Clear();
+  barcode_.Clear();
+  x_.Clear();
+  y_.Clear();
+  z_.Clear();
+  t_.Clear();
+  weight_.Clear();
+  charge_.Clear();
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool ProMCEvent_Particles::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // repeated uint32 id = 1 [packed = true];
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_id())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 10, input, this->mutable_id())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(18)) goto parse_pdg_id;
+        break;
+      }
+
+      // repeated sint32 pdg_id = 2 [packed = true];
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_pdg_id:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 input, this->mutable_pdg_id())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 1, 18, input, this->mutable_pdg_id())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(26)) goto parse_status;
+        break;
+      }
+
+      // repeated uint32 status = 3 [packed = true];
+      case 3: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_status:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_status())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 26, input, this->mutable_status())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(34)) goto parse_mass;
+        break;
+      }
+
+      // repeated uint64 mass = 4 [packed = true];
+      case 4: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_mass:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, this->mutable_mass())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 1, 34, input, this->mutable_mass())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(42)) goto parse_Px;
+        break;
+      }
+
+      // repeated sint64 Px = 5 [packed = true];
+      case 5: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_Px:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
+                 input, this->mutable_px())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
+                 1, 42, input, this->mutable_px())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(50)) goto parse_Py;
+        break;
+      }
+
+      // repeated sint64 Py = 6 [packed = true];
+      case 6: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_Py:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
+                 input, this->mutable_py())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
+                 1, 50, input, this->mutable_py())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(58)) goto parse_Pz;
+        break;
+      }
+
+      // repeated sint64 Pz = 7 [packed = true];
+      case 7: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_Pz:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
+                 input, this->mutable_pz())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_SINT64>(
+                 1, 58, input, this->mutable_pz())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(66)) goto parse_mother1;
+        break;
+      }
+
+      // repeated uint32 mother1 = 8 [packed = true];
+      case 8: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_mother1:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_mother1())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 66, input, this->mutable_mother1())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(74)) goto parse_mother2;
+        break;
+      }
+
+      // repeated uint32 mother2 = 9 [packed = true];
+      case 9: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_mother2:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_mother2())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 74, input, this->mutable_mother2())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(82)) goto parse_daughter1;
+        break;
+      }
+
+      // repeated uint32 daughter1 = 10 [packed = true];
+      case 10: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_daughter1:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_daughter1())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 82, input, this->mutable_daughter1())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(90)) goto parse_daughter2;
+        break;
+      }
+
+      // repeated uint32 daughter2 = 11 [packed = true];
+      case 11: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_daughter2:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_daughter2())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 1, 90, input, this->mutable_daughter2())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(98)) goto parse_barcode;
+        break;
+      }
+
+      // repeated sint32 barcode = 12 [packed = true];
+      case 12: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_barcode:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 input, this->mutable_barcode())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 1, 98, input, this->mutable_barcode())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(106)) goto parse_X;
+        break;
+      }
+
+      // repeated sint32 X = 13 [packed = true];
+      case 13: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_X:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 input, this->mutable_x())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 1, 106, input, this->mutable_x())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(114)) goto parse_Y;
+        break;
+      }
+
+      // repeated sint32 Y = 14 [packed = true];
+      case 14: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_Y:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 input, this->mutable_y())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 1, 114, input, this->mutable_y())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(122)) goto parse_Z;
+        break;
+      }
+
+      // repeated sint32 Z = 15 [packed = true];
+      case 15: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_Z:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 input, this->mutable_z())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 1, 122, input, this->mutable_z())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(130)) goto parse_T;
+        break;
+      }
+
+      // repeated uint32 T = 16 [packed = true];
+      case 16: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_T:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 input, this->mutable_t())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
+                 2, 130, input, this->mutable_t())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(138)) goto parse_weight;
+        break;
+      }
+
+      // repeated uint64 weight = 17 [packed = true];
+      case 17: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_weight:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 input, this->mutable_weight())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::uint64, ::google::protobuf::internal::WireFormatLite::TYPE_UINT64>(
+                 2, 138, input, this->mutable_weight())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(146)) goto parse_charge;
+        break;
+      }
+
+      // repeated sint32 charge = 18 [packed = true];
+      case 18: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_charge:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 input, this->mutable_charge())));
+        } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag)
+                   == ::google::protobuf::internal::WireFormatLite::
+                      WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_SINT32>(
+                 2, 146, input, this->mutable_charge())));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void ProMCEvent_Particles::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // repeated uint32 id = 1 [packed = true];
+  if (this->id_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(1, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_id_cached_byte_size_);
+  }
+  for (int i = 0; i < this->id_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->id(i), output);
+  }
+
+  // repeated sint32 pdg_id = 2 [packed = true];
+  if (this->pdg_id_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(2, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_pdg_id_cached_byte_size_);
+  }
+  for (int i = 0; i < this->pdg_id_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
+      this->pdg_id(i), output);
+  }
+
+  // repeated uint32 status = 3 [packed = true];
+  if (this->status_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_status_cached_byte_size_);
+  }
+  for (int i = 0; i < this->status_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->status(i), output);
+  }
+
+  // repeated uint64 mass = 4 [packed = true];
+  if (this->mass_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_mass_cached_byte_size_);
+  }
+  for (int i = 0; i < this->mass_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64NoTag(
+      this->mass(i), output);
+  }
+
+  // repeated sint64 Px = 5 [packed = true];
+  if (this->px_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(5, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_px_cached_byte_size_);
+  }
+  for (int i = 0; i < this->px_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag(
+      this->px(i), output);
+  }
+
+  // repeated sint64 Py = 6 [packed = true];
+  if (this->py_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(6, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_py_cached_byte_size_);
+  }
+  for (int i = 0; i < this->py_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag(
+      this->py(i), output);
+  }
+
+  // repeated sint64 Pz = 7 [packed = true];
+  if (this->pz_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(7, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_pz_cached_byte_size_);
+  }
+  for (int i = 0; i < this->pz_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt64NoTag(
+      this->pz(i), output);
+  }
+
+  // repeated uint32 mother1 = 8 [packed = true];
+  if (this->mother1_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(8, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_mother1_cached_byte_size_);
+  }
+  for (int i = 0; i < this->mother1_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->mother1(i), output);
+  }
+
+  // repeated uint32 mother2 = 9 [packed = true];
+  if (this->mother2_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(9, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_mother2_cached_byte_size_);
+  }
+  for (int i = 0; i < this->mother2_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->mother2(i), output);
+  }
+
+  // repeated uint32 daughter1 = 10 [packed = true];
+  if (this->daughter1_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(10, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_daughter1_cached_byte_size_);
+  }
+  for (int i = 0; i < this->daughter1_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->daughter1(i), output);
+  }
+
+  // repeated uint32 daughter2 = 11 [packed = true];
+  if (this->daughter2_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(11, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_daughter2_cached_byte_size_);
+  }
+  for (int i = 0; i < this->daughter2_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->daughter2(i), output);
+  }
+
+  // repeated sint32 barcode = 12 [packed = true];
+  if (this->barcode_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(12, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_barcode_cached_byte_size_);
+  }
+  for (int i = 0; i < this->barcode_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
+      this->barcode(i), output);
+  }
+
+  // repeated sint32 X = 13 [packed = true];
+  if (this->x_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(13, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_x_cached_byte_size_);
+  }
+  for (int i = 0; i < this->x_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
+      this->x(i), output);
+  }
+
+  // repeated sint32 Y = 14 [packed = true];
+  if (this->y_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(14, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_y_cached_byte_size_);
+  }
+  for (int i = 0; i < this->y_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
+      this->y(i), output);
+  }
+
+  // repeated sint32 Z = 15 [packed = true];
+  if (this->z_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(15, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_z_cached_byte_size_);
+  }
+  for (int i = 0; i < this->z_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
+      this->z(i), output);
+  }
+
+  // repeated uint32 T = 16 [packed = true];
+  if (this->t_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(16, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_t_cached_byte_size_);
+  }
+  for (int i = 0; i < this->t_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag(
+      this->t(i), output);
+  }
+
+  // repeated uint64 weight = 17 [packed = true];
+  if (this->weight_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(17, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_weight_cached_byte_size_);
+  }
+  for (int i = 0; i < this->weight_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteUInt64NoTag(
+      this->weight(i), output);
+  }
+
+  // repeated sint32 charge = 18 [packed = true];
+  if (this->charge_size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteTag(18, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output);
+    output->WriteVarint32(_charge_cached_byte_size_);
+  }
+  for (int i = 0; i < this->charge_size(); i++) {
+    ::google::protobuf::internal::WireFormatLite::WriteSInt32NoTag(
+      this->charge(i), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* ProMCEvent_Particles::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // repeated uint32 id = 1 [packed = true];
+  if (this->id_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      1,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _id_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->id_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->id(i), target);
+  }
+
+  // repeated sint32 pdg_id = 2 [packed = true];
+  if (this->pdg_id_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      2,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _pdg_id_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->pdg_id_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt32NoTagToArray(this->pdg_id(i), target);
+  }
+
+  // repeated uint32 status = 3 [packed = true];
+  if (this->status_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      3,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _status_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->status_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->status(i), target);
+  }
+
+  // repeated uint64 mass = 4 [packed = true];
+  if (this->mass_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      4,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _mass_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->mass_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt64NoTagToArray(this->mass(i), target);
+  }
+
+  // repeated sint64 Px = 5 [packed = true];
+  if (this->px_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      5,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _px_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->px_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt64NoTagToArray(this->px(i), target);
+  }
+
+  // repeated sint64 Py = 6 [packed = true];
+  if (this->py_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      6,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _py_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->py_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt64NoTagToArray(this->py(i), target);
+  }
+
+  // repeated sint64 Pz = 7 [packed = true];
+  if (this->pz_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      7,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _pz_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->pz_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt64NoTagToArray(this->pz(i), target);
+  }
+
+  // repeated uint32 mother1 = 8 [packed = true];
+  if (this->mother1_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      8,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _mother1_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->mother1_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->mother1(i), target);
+  }
+
+  // repeated uint32 mother2 = 9 [packed = true];
+  if (this->mother2_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      9,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _mother2_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->mother2_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->mother2(i), target);
+  }
+
+  // repeated uint32 daughter1 = 10 [packed = true];
+  if (this->daughter1_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      10,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _daughter1_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->daughter1_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->daughter1(i), target);
+  }
+
+  // repeated uint32 daughter2 = 11 [packed = true];
+  if (this->daughter2_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      11,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _daughter2_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->daughter2_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->daughter2(i), target);
+  }
+
+  // repeated sint32 barcode = 12 [packed = true];
+  if (this->barcode_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      12,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _barcode_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->barcode_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt32NoTagToArray(this->barcode(i), target);
+  }
+
+  // repeated sint32 X = 13 [packed = true];
+  if (this->x_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      13,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _x_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->x_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt32NoTagToArray(this->x(i), target);
+  }
+
+  // repeated sint32 Y = 14 [packed = true];
+  if (this->y_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      14,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _y_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->y_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt32NoTagToArray(this->y(i), target);
+  }
+
+  // repeated sint32 Z = 15 [packed = true];
+  if (this->z_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      15,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _z_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->z_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt32NoTagToArray(this->z(i), target);
+  }
+
+  // repeated uint32 T = 16 [packed = true];
+  if (this->t_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      16,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _t_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->t_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt32NoTagToArray(this->t(i), target);
+  }
+
+  // repeated uint64 weight = 17 [packed = true];
+  if (this->weight_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      17,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _weight_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->weight_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteUInt64NoTagToArray(this->weight(i), target);
+  }
+
+  // repeated sint32 charge = 18 [packed = true];
+  if (this->charge_size() > 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteTagToArray(
+      18,
+      ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED,
+      target);
+    target = ::google::protobuf::io::CodedOutputStream::WriteVarint32ToArray(
+      _charge_cached_byte_size_, target);
+  }
+  for (int i = 0; i < this->charge_size(); i++) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteSInt32NoTagToArray(this->charge(i), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int ProMCEvent_Particles::ByteSize() const {
+  int total_size = 0;
+
+  // repeated uint32 id = 1 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->id_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->id(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _id_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint32 pdg_id = 2 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->pdg_id_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt32Size(this->pdg_id(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _pdg_id_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint32 status = 3 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->status_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->status(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _status_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint64 mass = 4 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->mass_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt64Size(this->mass(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _mass_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint64 Px = 5 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->px_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt64Size(this->px(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _px_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint64 Py = 6 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->py_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt64Size(this->py(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _py_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint64 Pz = 7 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->pz_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt64Size(this->pz(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _pz_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint32 mother1 = 8 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->mother1_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->mother1(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _mother1_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint32 mother2 = 9 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->mother2_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->mother2(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _mother2_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint32 daughter1 = 10 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->daughter1_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->daughter1(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _daughter1_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint32 daughter2 = 11 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->daughter2_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->daughter2(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _daughter2_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint32 barcode = 12 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->barcode_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt32Size(this->barcode(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _barcode_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint32 X = 13 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->x_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt32Size(this->x(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _x_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint32 Y = 14 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->y_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt32Size(this->y(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _y_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint32 Z = 15 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->z_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt32Size(this->z(i));
+    }
+    if (data_size > 0) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _z_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint32 T = 16 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->t_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt32Size(this->t(i));
+    }
+    if (data_size > 0) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _t_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated uint64 weight = 17 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->weight_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        UInt64Size(this->weight(i));
+    }
+    if (data_size > 0) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _weight_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  // repeated sint32 charge = 18 [packed = true];
+  {
+    int data_size = 0;
+    for (int i = 0; i < this->charge_size(); i++) {
+      data_size += ::google::protobuf::internal::WireFormatLite::
+        SInt32Size(this->charge(i));
+    }
+    if (data_size > 0) {
+      total_size += 2 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(data_size);
+    }
+    GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+    _charge_cached_byte_size_ = data_size;
+    GOOGLE_SAFE_CONCURRENT_WRITES_END();
+    total_size += data_size;
+  }
+
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void ProMCEvent_Particles::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const ProMCEvent_Particles* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const ProMCEvent_Particles*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void ProMCEvent_Particles::MergeFrom(const ProMCEvent_Particles& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  id_.MergeFrom(from.id_);
+  pdg_id_.MergeFrom(from.pdg_id_);
+  status_.MergeFrom(from.status_);
+  mass_.MergeFrom(from.mass_);
+  px_.MergeFrom(from.px_);
+  py_.MergeFrom(from.py_);
+  pz_.MergeFrom(from.pz_);
+  mother1_.MergeFrom(from.mother1_);
+  mother2_.MergeFrom(from.mother2_);
+  daughter1_.MergeFrom(from.daughter1_);
+  daughter2_.MergeFrom(from.daughter2_);
+  barcode_.MergeFrom(from.barcode_);
+  x_.MergeFrom(from.x_);
+  y_.MergeFrom(from.y_);
+  z_.MergeFrom(from.z_);
+  t_.MergeFrom(from.t_);
+  weight_.MergeFrom(from.weight_);
+  charge_.MergeFrom(from.charge_);
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void ProMCEvent_Particles::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ProMCEvent_Particles::CopyFrom(const ProMCEvent_Particles& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ProMCEvent_Particles::IsInitialized() const {
+
+  return true;
+}
+
+void ProMCEvent_Particles::Swap(ProMCEvent_Particles* other) {
+  if (other != this) {
+    id_.Swap(&other->id_);
+    pdg_id_.Swap(&other->pdg_id_);
+    status_.Swap(&other->status_);
+    mass_.Swap(&other->mass_);
+    px_.Swap(&other->px_);
+    py_.Swap(&other->py_);
+    pz_.Swap(&other->pz_);
+    mother1_.Swap(&other->mother1_);
+    mother2_.Swap(&other->mother2_);
+    daughter1_.Swap(&other->daughter1_);
+    daughter2_.Swap(&other->daughter2_);
+    barcode_.Swap(&other->barcode_);
+    x_.Swap(&other->x_);
+    y_.Swap(&other->y_);
+    z_.Swap(&other->z_);
+    t_.Swap(&other->t_);
+    weight_.Swap(&other->weight_);
+    charge_.Swap(&other->charge_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata ProMCEvent_Particles::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = ProMCEvent_Particles_descriptor_;
+  metadata.reflection = ProMCEvent_Particles_reflection_;
+  return metadata;
+}
+
+
+// -------------------------------------------------------------------
+
+#ifndef _MSC_VER
+const int ProMCEvent::kEventFieldNumber;
+const int ProMCEvent::kParticlesFieldNumber;
+#endif  // !_MSC_VER
+
+ProMCEvent::ProMCEvent()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void ProMCEvent::InitAsDefaultInstance() {
+  event_ = const_cast< ::promc::ProMCEvent_Event*>(&::promc::ProMCEvent_Event::default_instance());
+  particles_ = const_cast< ::promc::ProMCEvent_Particles*>(&::promc::ProMCEvent_Particles::default_instance());
+}
+
+ProMCEvent::ProMCEvent(const ProMCEvent& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void ProMCEvent::SharedCtor() {
+  _cached_size_ = 0;
+  event_ = NULL;
+  particles_ = NULL;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+ProMCEvent::~ProMCEvent() {
+  SharedDtor();
+}
+
+void ProMCEvent::SharedDtor() {
+  if (this != default_instance_) {
+    delete event_;
+    delete particles_;
+  }
+}
+
+void ProMCEvent::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* ProMCEvent::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return ProMCEvent_descriptor_;
+}
+
+const ProMCEvent& ProMCEvent::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ProMC_2eproto();
+  return *default_instance_;
+}
+
+ProMCEvent* ProMCEvent::default_instance_ = NULL;
+
+ProMCEvent* ProMCEvent::New() const {
+  return new ProMCEvent;
+}
+
+void ProMCEvent::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (has_event()) {
+      if (event_ != NULL) event_->::promc::ProMCEvent_Event::Clear();
+    }
+    if (has_particles()) {
+      if (particles_ != NULL) particles_->::promc::ProMCEvent_Particles::Clear();
+    }
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool ProMCEvent::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // optional .promc.ProMCEvent.Event event = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+               input, mutable_event()));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(18)) goto parse_particles;
+        break;
+      }
+
+      // optional .promc.ProMCEvent.Particles particles = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+         parse_particles:
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
+               input, mutable_particles()));
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void ProMCEvent::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // optional .promc.ProMCEvent.Event event = 1;
+  if (has_event()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      1, this->event(), output);
+  }
+
+  // optional .promc.ProMCEvent.Particles particles = 2;
+  if (has_particles()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      2, this->particles(), output);
+  }
+
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* ProMCEvent::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // optional .promc.ProMCEvent.Event event = 1;
+  if (has_event()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteMessageNoVirtualToArray(
+        1, this->event(), target);
+  }
+
+  // optional .promc.ProMCEvent.Particles particles = 2;
+  if (has_particles()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      WriteMessageNoVirtualToArray(
+        2, this->particles(), target);
+  }
+
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int ProMCEvent::ByteSize() const {
+  int total_size = 0;
+
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // optional .promc.ProMCEvent.Event event = 1;
+    if (has_event()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
+          this->event());
+    }
+
+    // optional .promc.ProMCEvent.Particles particles = 2;
+    if (has_particles()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
+          this->particles());
+    }
+
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void ProMCEvent::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const ProMCEvent* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const ProMCEvent*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void ProMCEvent::MergeFrom(const ProMCEvent& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from.has_event()) {
+      mutable_event()->::promc::ProMCEvent_Event::MergeFrom(from.event());
+    }
+    if (from.has_particles()) {
+      mutable_particles()->::promc::ProMCEvent_Particles::MergeFrom(from.particles());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void ProMCEvent::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void ProMCEvent::CopyFrom(const ProMCEvent& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ProMCEvent::IsInitialized() const {
+
+  return true;
+}
+
+void ProMCEvent::Swap(ProMCEvent* other) {
+  if (other != this) {
+    std::swap(event_, other->event_);
+    std::swap(particles_, other->particles_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata ProMCEvent::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = ProMCEvent_descriptor_;
+  metadata.reflection = ProMCEvent_reflection_;
+  return metadata;
+}
+
+
+// @@protoc_insertion_point(namespace_scope)
+
+}  // namespace promc
+
+// @@protoc_insertion_point(global_scope)
