Index: /trunk/interface/PdgParticle.h
===================================================================
--- /trunk/interface/PdgParticle.h	(revision 386)
+++ /trunk/interface/PdgParticle.h	(revision 386)
@@ -0,0 +1,43 @@
+#ifndef _PDGPARTICLE_H_
+#define _PDGPARTICLE_H_
+
+#include <string>
+#include <map>
+
+class PdgParticle {
+  public:
+	PdgParticle(): _pid(-999), _mass(0), _charge(0), _gamma_tot(0), _tau(0), _name("Unknown") {};
+	PdgParticle(const int pid, const std::string& name, const float m, const float q, const float gamma, const float tau);
+	PdgParticle(const PdgParticle& p);
+	PdgParticle& operator=(const PdgParticle& p);
+	~PdgParticle() {};
+	int pid() const {return _pid;};
+	float mass() const {return _mass;};
+	float charge() const {return _charge;};
+	float gamma_tot() const {return _gamma_tot;};
+	float tau() const {return _tau;};
+        std::string name() const {return _name;};
+
+  private:
+	int _pid;
+	float _mass;       // GeV
+	float _charge;     // in e+
+	float _gamma_tot;  
+	float _tau;
+	std::string _name;
+};
+
+class PdgTable {
+  public:
+	PdgTable(){};
+	PdgTable(const PdgTable& table);
+	PdgTable& operator=(const PdgTable& table);
+        ~PdgTable(){};
+	void insert(const int pid, const PdgParticle &p);
+	void print() const;
+        PdgParticle operator[](const int pid) const;
+  private:
+	std::map<int, PdgParticle> _table;
+};
+
+#endif
Index: /trunk/src/PdgParticle.cc
===================================================================
--- /trunk/src/PdgParticle.cc	(revision 386)
+++ /trunk/src/PdgParticle.cc	(revision 386)
@@ -0,0 +1,91 @@
+/***********************************************************************
+**                                                                    **
+**          /----------------------------------------------\          **
+**         |  Delphes, a framework for the fast simulation  |         **
+**         |       of a  generic collider experiment        |         **
+**          \-------------  arXiv:0903.2225v1  ------------/          **
+**                                                                    **
+**                                                                    **
+**   This package uses:                                               **
+**   ------------------                                               **
+**   FastJet algorithm: Phys. Lett. B641 (2006) [hep-ph/0512210]      **
+**   Hector: JINST 2:P09005 (2007) [physics.acc-ph:0707.1198v2]       **
+**   FROG: [hep-ex/0901.2718v1]                                       **
+**                                                                    **
+** ------------------------------------------------------------------ **
+**                                                                    **
+**   Main authors:                                                    **
+**   -------------                                                    **
+**                                                                    **
+**                Severine Ovyn                Xavier Rouby           **
+**          severine.ovyn@uclouvain.be      xavier.rouby@cern         **
+**                                                                    **
+**         Center for Particle Physics and Phenomenology (CP3)        **
+**                Universite catholique de Louvain (UCL)              **
+**                     Louvain-la-Neuve, Belgium                      **
+**                                                                    **
+**                      Copyright (C) 2008-2009,                      **
+**                        All rights reserved.                        **
+**                                                                    **
+***********************************************************************/
+
+/// \file PdgParticle.h
+/// \brief Stores the data from PDG particle tables
+
+#include "PdgParticle.h"
+#include <iostream> 
+#include <string>
+#include <map>
+
+//PdgParticle::PdgParticle() : _pid(1), _mass(-1), _charge(-999), _gamma_tot(-1), _tau(-1), _name("") {}
+
+PdgParticle::PdgParticle(const int pid, const std::string& name, const float m, const float q, const float gamma, const float tau) :
+  _pid(pid), _mass(m), _charge(q), _gamma_tot(gamma), _tau(tau), _name(name) {}
+
+
+PdgParticle::PdgParticle(const PdgParticle& p) :
+  _pid(p._pid), _mass(p._mass), _charge(p._charge), _gamma_tot(p._gamma_tot), _tau(p._tau), _name(p._name) {}
+
+PdgParticle& PdgParticle::operator=(const PdgParticle& p) {
+   if(this == &p) return *this;
+    _pid = p._pid; 	_name= p._name;			_mass=p._mass; 
+    _charge=p._charge; 	_gamma_tot=p._gamma_tot;	_tau = p._tau;
+   return *this;
+}
+
+PdgTable::PdgTable(const PdgTable& table) {
+   std::map<int, PdgParticle>::const_iterator i;
+   for(i = table._table.begin(); i != table._table.end(); i++)
+	 _table.insert(std::map<int,PdgParticle>::value_type(i->first,i->second));
+}
+
+PdgTable& PdgTable::operator=(const PdgTable& table) {
+   if(this == &table) return *this;
+   std::map<int, PdgParticle>::const_iterator i;
+   for(i = table._table.begin(); i != table._table.end(); i++)
+         _table.insert(std::map<int,PdgParticle>::value_type(i->first,i->second));
+   return *this;
+}
+
+void PdgTable::insert(const int pid, const PdgParticle &p) {
+   _table.insert(std::map<int,PdgParticle>::value_type(pid,p));
+}
+
+void PdgTable::print() const {
+   std::map<int, PdgParticle>::const_iterator i;
+   for(i = _table.begin(); i != _table.end(); i++)
+         std::cout << "name = " << i->second.name() << "\t\tpid = " 
+                   << i->first << "\t M=" <<  i->second.mass() << "\t Q=" 
+                   << i->second.charge() << std::endl;
+}
+
+PdgParticle PdgTable::operator[](const int pid) const {
+   std::map<int, PdgParticle>::const_iterator i;
+   i =_table.find(pid);
+   if(i==_table.end()) {
+	std::cout <<"**        WARNING: PDG ID not found (" << pid << "), use default values    **" << std::endl;
+	return PdgParticle();
+   }
+   
+   return i->second;
+}
