thepeg is hosted by Hepforge, IPPP Durham
ThePEG  2.2.1
StdXCombGroup.h
1 // -*- C++ -*-
2 //
3 // StdXCombGroup.h is a part of ThePEG - Toolkit for HEP Event Generation
4 // Copyright (C) 1999-2019 Leif Lonnblad
5 // Copyright (C) 2009-2019 Simon Platzer
6 //
7 // ThePEG is licenced under version 3 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 "StdXCombGroup.fh"
16 #include "ThePEG/MatrixElement/MEGroup.fh"
17 
18 namespace ThePEG {
19 
27 
29  friend class MEBase;
30 
31 public:
32 
38  StdXCombGroup(Energy newMaxEnergy, const cPDPair & inc,
39  tEHPtr newEventHandler,tSubHdlPtr newSubProcessHandler,
40  tPExtrPtr newExtractor, tCascHdlPtr newCKKW,
41  const PBPair & newPartonBins, tCutsPtr newCuts, tMEGroupPtr newME,
42  const DiagramVector & newDiagrams, bool mir,
43  tStdXCombPtr newHead = tStdXCombPtr());
44 
48  StdXCombGroup();
49 
53  virtual ~StdXCombGroup();
54 
55 public:
56 
60  virtual void clean();
61 
66  virtual int nDim() const;
67 
73  virtual CrossSection dSigDR(const pair<double,double> ll, int nr, const double * r);
74 
79 
83  const vector<StdXCombPtr>& dependent() const { return theDependent; }
84 
89  tcMEGroupPtr meGroup() const { return theMEGroup; }
90 
94  void build(const PartonPairVec& allPBins);
95 
99  virtual tSubProPtr construct();
100 
105  virtual void newSubProcess(bool);
106 
111 
112 public:
113 
120  void persistentOutput(PersistentOStream & os) const;
121 
127  void persistentInput(PersistentIStream & is, int version);
129 
133  static void Init();
134 
135 private:
136 
140  MEGroupPtr theMEGroup;
141 
145  vector<StdXCombPtr> theDependent;
146 
151 
152 private:
153 
158 
162  StdXCombGroup & operator=(const StdXCombGroup &) = delete;
163 
164 };
165 
172 template <>
173 struct BaseClassTrait<StdXCombGroup,1> {
175  typedef StandardXComb NthBase;
176 };
177 
182 template <>
183 struct ClassTraits<StdXCombGroup>:
184  public ClassTraitsBase<StdXCombGroup> {
186  static string className() { return "ThePEG::StdXCombGroup"; }
187 };
188 
191 }
192 
193 #endif /* ThePEG_StdXCombGroup_H */
virtual int nDim() const
The number of dimensions of the phase space used to generate this process.
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...
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:519
The StdXCombGroup class represents a &#39;head&#39; XComb object in association with a group of dependent XCo...
Definition: StdXCombGroup.h:26
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.
CrossSection lastHeadCrossSection() const
Return the cross section calculated from the head matrix element.
Definition: StdXCombGroup.h:78
StdXCombGroup()
Default constructor.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
tcMEGroupPtr meGroup() const
Return the matrix element group steered by this XComb group.
Definition: StdXCombGroup.h:89
virtual void newSubProcess(bool)
Construct the corresponding SubProcess object if it hasn&#39;t been done before.
MEBase::DiagramVector DiagramVector
A vector of DiagramBase objects.
Definition: StandardXComb.h:58
vector< StdXCombPtr > theDependent
The dependent XComb objects.
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.
virtual void clean()
Reset all saved data about last generated phasespace point;.
CrossSection theLastHeadCrossSection
The cross section calculated from the head matrix element.
static ClassDescription< StdXCombGroup > initStdXCombGroup
Describe a concrete class with persistent data.
The default concrete implementation of ClassTraitsBase.
Definition: ClassTraits.h:134
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:72
StdXCombGroup & operator=(const StdXCombGroup &)=delete
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.
The templated ClassTraitsBase class defines a set of default information about classes used by ThePEG...
Definition: ClassTraits.h:52
const vector< StdXCombPtr > & dependent() const
Visit the dependent XComb objects.
Definition: StdXCombGroup.h:83