00001 // -*- C++ -*- 00002 // 00003 // BeamParticleData.h is a part of ThePEG - Toolkit for HEP Event Generation 00004 // Copyright (C) 1999-2007 Leif Lonnblad 00005 // 00006 // ThePEG is licenced under version 2 of the GPL, see COPYING for details. 00007 // Please respect the MCnet academic guidelines, see GUIDELINES for details. 00008 // 00009 #ifndef ThePEG_BeamParticleData_H 00010 #define ThePEG_BeamParticleData_H 00011 // This is the declaration of the BeamParticleData class. 00012 00013 #include "ThePEG/PDT/ParticleData.h" 00014 #include "ThePEG/PDF/PDFBase.h" 00015 #include "BeamParticleData.xh" 00016 00017 namespace ThePEG { 00018 00029 class BeamParticleData: public virtual ParticleData { 00030 00031 public: 00032 00038 BeamParticleData() {} 00040 00047 static PDPtr Create(long newId, string newPDGName); 00048 00054 static PDPair Create(long newId, string newPDGName, string newAntiPDGName); 00056 00057 public: 00058 00063 tcPDFPtr pdf() const { return thePDF; } 00064 00065 public: 00066 00073 void persistentOutput(PersistentOStream & os) const; 00074 00080 void persistentInput(PersistentIStream & is, int version); 00082 00086 static void Init(); 00087 00088 protected: 00089 00094 BeamParticleData(long newId, string newPDGName); 00095 00099 virtual PDPtr pdclone() const; 00100 00101 private: 00102 00106 void setPDF(PDFPtr); 00107 00108 private: 00109 00113 PDFPtr thePDF; 00114 00115 private: 00116 00120 static ClassDescription<BeamParticleData> initBeamParticleData; 00121 00125 BeamParticleData & operator=(const BeamParticleData &); 00126 00127 }; 00128 00133 template <> 00134 struct BaseClassTrait<BeamParticleData,1>: public ClassTraitsType { 00136 typedef ParticleData NthBase; 00137 }; 00138 00141 template <> 00142 struct ClassTraits<BeamParticleData>: 00143 public ClassTraitsBase<BeamParticleData> { 00145 static string className() { return "ThePEG::BeamParticleData"; } 00146 }; 00147 00150 } 00151 00152 #endif /* ThePEG_BeamParticleData_H */