00001 // -*- C++ -*- 00002 // 00003 // PartonBin.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_PartonBin_H 00010 #define ThePEG_PartonBin_H 00011 // This is the declaration of the PartonBin class. 00012 00013 #include "ThePEG/Config/ThePEG.h" 00014 #include "ThePEG/Utilities/ClassDescription.h" 00015 #include "ThePEG/Utilities/Maths.h" 00016 #include "ThePEG/PDF/PDFBase.h" 00017 #include "ThePEG/PDF/PDFCuts.h" 00018 #include "ThePEG/Vectors/Transverse.h" 00019 #include "ThePEG/EventRecord/Particle.h" 00020 #include "PartonBin.fh" 00021 00022 namespace ThePEG { 00023 00038 class PartonBin: public Base { 00039 00040 public: 00041 00043 typedef vector<PBPtr> PBVector; 00044 00045 public: 00046 00061 PartonBin(tcPDPtr p, tPBPtr prev, tcPDPtr pi, tcPDFPtr pdf, 00062 const PDFCuts & newCuts); 00063 00067 PartonBin(); 00068 00072 virtual ~PartonBin(); 00074 00075 public: 00076 00082 tcPDPtr particle() const { return theParticle; } 00083 00088 tPBPtr incoming() const { return theIncomingBin; } 00089 00094 const PBVector & outgoing() const { return theOutgoing; } 00095 00100 void addOutgoing(tPBPtr pb) { theOutgoing.push_back(pb); } 00101 00105 tcPDPtr parton() const { return theParton; } 00106 00111 tcPDFPtr pdf() const { return thePDF; } 00112 00116 tcRemHPtr remnantHandler() const { return theRemnantHandler; } 00117 00124 int nDim(bool doscale); 00125 00130 int pdfDim() const { return thePDFDim; } 00131 00136 int remDim() const { return theRemDim; } 00138 00144 const PDFCuts & cuts() const { return theCuts; } 00145 00150 double fullFn(Energy2 newScale = -1.0*GeV2); 00151 00155 tPBPtr getFirst(); 00157 00158 public: 00159 00166 void persistentOutput(PersistentOStream & os) const; 00167 00173 void persistentInput(PersistentIStream & is, int version); 00175 00179 static void Init(); 00180 00181 private: 00182 00186 cPDPtr theParticle; 00187 00192 tPBPtr theIncomingBin; 00193 00198 PBVector theOutgoing; 00199 00203 cPDPtr theParton; 00204 00209 cPDFPtr thePDF; 00210 00214 cRemHPtr theRemnantHandler; 00215 00220 int thePDFDim; 00221 00226 int theRemDim; 00227 00231 PDFCuts theCuts; 00232 00233 private: 00234 00238 static ClassDescription<PartonBin> initPartonBin; 00239 00243 PartonBin & operator=(const PartonBin &); 00244 00245 }; 00246 00251 template <> 00252 struct BaseClassTrait<PartonBin,1>: public ClassTraitsType { 00254 typedef Base NthBase; 00255 }; 00256 00259 template <> 00260 struct ClassTraits<PartonBin>: public ClassTraitsBase<PartonBin> { 00262 static string className() { return "ThePEG::PartonBin"; } 00263 }; 00264 00267 } 00268 00269 #endif /* ThePEG_PartonBin_H */