ThePEG  1.8.0
PartonBin.h
1 // -*- C++ -*-
2 //
3 // PartonBin.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2011 Leif Lonnblad
5 //
6 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
7 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
8 //
9 #ifndef ThePEG_PartonBin_H
10 #define ThePEG_PartonBin_H
11 // This is the declaration of the PartonBin class.
12 
13 #include "ThePEG/Config/ThePEG.h"
14 #include "ThePEG/Utilities/ClassDescription.h"
15 #include "ThePEG/Utilities/Maths.h"
16 #include "ThePEG/PDF/PDFBase.h"
17 #include "ThePEG/PDF/PDFCuts.h"
18 #include "ThePEG/Vectors/Transverse.h"
19 #include "ThePEG/EventRecord/Particle.h"
20 #include "PartonBin.fh"
21 
22 namespace ThePEG {
23 
38 class PartonBin: public Base {
39 
40 public:
41 
43 typedef vector<PBPtr> PBVector;
44 
45 public:
46 
62  const PDFCuts & newCuts);
63 
67  PartonBin();
68 
72  virtual ~PartonBin();
74 
75 public:
76 
82  tcPDPtr particle() const { return theParticle; }
83 
88  tPBPtr incoming() const { return theIncomingBin; }
89 
94  const PBVector & outgoing() const { return theOutgoing; }
95 
100  void addOutgoing(tPBPtr pb) { theOutgoing.push_back(pb); }
101 
105  tcPDPtr parton() const { return theParton; }
106 
111  tcPDFPtr pdf() const { return thePDF; }
112 
117 
124  int nDim(bool doscale);
125 
130  int pdfDim() const { return thePDFDim; }
131 
136  int remDim() const { return theRemDim; }
138 
144  const PDFCuts & cuts() const { return theCuts; }
145 
149  tPBPtr getFirst();
151 
152 public:
153 
160  void persistentOutput(PersistentOStream & os) const;
161 
167  void persistentInput(PersistentIStream & is, int version);
169 
173  static void Init();
174 
175 private:
176 
181 
187 
193 
198 
204 
209 
215 
221 
226 
227 private:
228 
233 
237  PartonBin & operator=(const PartonBin &);
238 
239 };
240 
245 template <>
246 struct BaseClassTrait<PartonBin,1>: public ClassTraitsType {
248  typedef Base NthBase;
249 };
250 
253 template <>
254 struct ClassTraits<PartonBin>: public ClassTraitsBase<PartonBin> {
256  static string className() { return "ThePEG::PartonBin"; }
257 };
258 
261 }
262 
263 #endif /* ThePEG_PartonBin_H */