ThePEG  1.8.0
CascadeHandler.h
1 // -*- C++ -*-
2 //
3 // CascadeHandler.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_CascadeHandler_H
10 #define ThePEG_CascadeHandler_H
11 // This is the declaration of the CascadeHandler class.
12 
13 #include "StepHandler.h"
14 #include "ThePEG/Handlers/LastXCombInfo.h"
15 #include "ThePEG/PDF/PDF.h"
16 
17 namespace ThePEG {
18 
19 
33 class CascadeHandler: public StepHandler, public LastXCombInfo<> {
34 
35 public:
36 
42  virtual ~CascadeHandler();
44 
45 public:
46 
63  virtual void handle(EventHandler & eh, const tPVector & tagged,
64  const Hint & hint);
66 
72  virtual void cascade() = 0;
73 
91  virtual double reweightCKKW(int minMult, int maxMult);
92 
93 public:
94 
102  const tPVector & tagged() const { return *theTagged; }
103 
107  const Hint & hint() const { return *theHint; }
108 
112  const PDF & firstPDF() const { return pdfs().first; }
113 
117  const PDF & secondPDF() const { return pdfs().second; }
118 
122  const pair<PDF,PDF> & pdfs() const { return thePDFs; }
123 
127  void resetPDFs(const pair<tcPDFPtr,tcPDFPtr> & pdfpair);
128 
133  void setXComb(tXCombPtr xc);
135 
136 public:
137 
141  static void Init();
142 
143 private:
144 
149 
153  const Hint * theHint;
154 
158  pair<PDF,PDF> thePDFs;
159 
160 private:
161 
167 
172 
173 };
174 
179 template <>
182  typedef StepHandler NthBase;
183 };
184 
187 template <>
188 struct ClassTraits<CascadeHandler>: public ClassTraitsBase<CascadeHandler> {
190  static string className() { return "ThePEG::CascadeHandler"; }
191 };
192 
195 }
196 
197 #endif /* ThePEG_CascadeHandler_H */