ThePEG  1.8.0
StdXCombGroup.h
1 // -*- C++ -*-
2 //
3 // StdXCombGroup.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2007 Leif Lonnblad
5 // Copyright (C) 2009-2010 Simon Platzer
6 //
7 // ThePEG is licenced under version 2 of the GPL, see COPYING for details.
8 // Please respect the MCnet academic guidelines, see GUIDELINES for details.
9 //
10 #ifndef ThePEG_StdXCombGroup_H
11 #define ThePEG_StdXCombGroup_H
12 // This is the declaration of the StdXCombGroup class.
13 
14 #include "StandardXComb.h"
15 #include "StdDependentXComb.h"
16 #include "StdXCombGroup.fh"
17 #include "ThePEG/MatrixElement/MEGroup.fh"
18 
19 namespace ThePEG {
20 
29 
31  friend class MEBase;
32 
33 public:
34 
40  StdXCombGroup(Energy newMaxEnergy, const cPDPair & inc,
41  tEHPtr newEventHandler,tSubHdlPtr newSubProcessHandler,
42  tPExtrPtr newExtractor, tCascHdlPtr newCKKW,
43  const PBPair & newPartonBins, tCutsPtr newCuts, tMEGroupPtr newME,
44  const DiagramVector & newDiagrams, bool mir);
45 
49  StdXCombGroup();
50 
54  virtual ~StdXCombGroup();
55 
56 public:
57 
63  virtual CrossSection dSigDR(const pair<double,double> ll, int nr, const double * r);
64 
69 
73  const StdDepXCVector& dependent() const { return theDependent; }
74 
79  tcMEGroupPtr meGroup() const { return theMEGroup; }
80 
84  void build(const PartonPairVec& allPBins);
85 
89  virtual tSubProPtr construct();
90 
91 protected:
92 
97  virtual void newSubProcess(bool);
98 
99 public:
100 
107  void persistentOutput(PersistentOStream & os) const;
108 
114  void persistentInput(PersistentIStream & is, int version);
116 
120  static void Init();
121 
122 protected:
123 
128 
129 private:
130 
134  MEGroupPtr theMEGroup;
135 
139  StdDepXCVector theDependent;
140 
145 
146 private:
147 
152 
157 
158 };
159 
166 template <>
167 struct BaseClassTrait<StdXCombGroup,1> {
169  typedef StandardXComb NthBase;
170 };
171 
176 template <>
177 struct ClassTraits<StdXCombGroup>:
178  public ClassTraitsBase<StdXCombGroup> {
180  static string className() { return "ThePEG::StdXCombGroup"; }
181 };
182 
185 }
186 
187 #endif /* ThePEG_StdXCombGroup_H */
virtual CrossSection dSigDR(const pair< double, double > ll, int nr, const double *r)
Generate a phase space point from a vector r of nr numbers in the interval ]0,1[ and return the corre...
PersistentIStream is used to read persistent objects from a stream where they were previously written...
tcMEGroupPtr meGroup() const
Return the matrix element group steered by this XComb group.
Definition: StdXCombGroup.h:79
MEGroupPtr theMEGroup
The MEGroup object.
static void Init()
Standard Init function used to initialize the interface.
virtual ~StdXCombGroup()
Destructor.
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:509
The StdXCombGroup class represents a 'head' XComb object in association with a group of dependent XCo...
Definition: StdXCombGroup.h:28
virtual tSubProPtr construct()
Construct a sub-process object from the information available.
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
StdXCombGroup()
Default constructor.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
virtual void newSubProcess(bool)
Construct the corresponding SubProcess object if it hasn't been done before.
QTY< 0, 1, 0 >::Type Energy
Energy.
Definition: Unitsystem.h:34
MEBase::DiagramVector DiagramVector
A vector of DiagramBase objects.
Definition: StandardXComb.h:58
The StandardXComb class inherits from the more general XComb class which stores all information about...
Definition: StandardXComb.h:53
void build(const PartonPairVec &allPBins)
Initialize this XComb group.
CrossSection theLastHeadCrossSection
The cross section calculated from the head matrix element.
StdDepXCVector theDependent
The dependent XComb objects.
static ClassDescription< StdXCombGroup > initStdXCombGroup
Describe a concrete class with persistent data.
const StdDepXCVector & dependent() const
Visit the dependent XComb objects.
Definition: StdXCombGroup.h:73
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
This template class allows the compiler to check calculations with physical quantities for dimensiona...
Definition: PhysicalQty.h:81
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
pair< cPDPtr, cPDPtr > cPDPair
A pair of pointers to const ParticleData objects.
Definition: Containers.h:118
The MEBase class is the base class of all objects representing hard matrix elements in ThePEG...
Definition: MEBase.h:67
StdXCombGroup & operator=(const StdXCombGroup &)
Private and non-existent assignment operator.
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
void lastHeadCrossSection(CrossSection xs)
Set the cross section calculated from the head matrix element.
CrossSection lastHeadCrossSection() const
Return the cross section calculated from the head matrix element.
Definition: StdXCombGroup.h:68