thepeg is hosted by Hepforge, IPPP Durham
ThePEG 2.3.0
SubProcessHandler.h
1// -*- C++ -*-
2//
3// SubProcessHandler.h is a part of ThePEG - Toolkit for HEP Event Generation
4// Copyright (C) 1999-2019 Leif Lonnblad
5//
6// ThePEG is licenced under version 3 of the GPL, see COPYING for details.
7// Please respect the MCnet academic guidelines, see GUIDELINES for details.
8//
9#ifndef ThePEG_SubProcessHandler_H
10#define ThePEG_SubProcessHandler_H
11// This is the declaration of the SubProcessHandler class.
12
14#include "ThePEG/Utilities/Interval.h"
15#include "ThePEG/Handlers/HandlerGroup.h"
16#include "ThePEG/Handlers/HandlerBase.h"
17#include "ThePEG/MatrixElement/MEBase.fh"
18#include "ThePEG/Cuts/Cuts.fh"
19#include "SubProcessHandler.fh"
20
21namespace ThePEG {
22
50
51public:
52
54 typedef vector<HandlerGroupBase *> GroupVector;
55
57 typedef vector<ReweightPtr> ReweightVector;
58
59public:
60
67
72
78
79public:
80
87
91 const MEVector & MEs() const { return theMEs; }
92
96 tCutsPtr cuts() const { return theCuts; }
97
103
108
112 const GroupVector & groups() const { return theGroups; }
113
117 MEVector & MEs() { return theMEs; }
119
120public:
121
129
135 void persistentInput(PersistentIStream & is, int version);
137
141 static void Init();
142
143protected:
144
151 virtual IBPtr clone() const;
152
157 virtual IBPtr fullclone() const;
159
162
168 virtual void doinit();
169
174 virtual void doinitrun();
176
177private:
178
183
184private:
185
190
194 MEVector theMEs;
195
199 CutsPtr theCuts;
200
205
210
215
220
225
230
241
242private:
243
244 ThePEG_DECLARE_PREPOST_GROUP(SubProcessHandler,Post);
245 ThePEG_DECLARE_GROUPINTERFACE(CascadeHandler,CascHdlPtr);
246 ThePEG_DECLARE_GROUPINTERFACE(MultipleInteractionHandler,MIHdlPtr);
247 ThePEG_DECLARE_GROUPINTERFACE(HadronizationHandler,HadrHdlPtr);
248 ThePEG_DECLARE_GROUPINTERFACE(DecayHandler,DecayHdlPtr);
249
254
255private:
256
261
262};
263
268template <>
271 typedef HandlerBase NthBase;
272};
273
276template <>
277struct ClassTraits<SubProcessHandler>:
278 public ClassTraitsBase<SubProcessHandler> {
280 static string className() { return "ThePEG::SubProcessHandler"; }
281};
282
285}
286
287#endif /* ThePEG_SubProcessHandler_H */
This is the main config header file for ThePEG.
The CascadeHandler is the base class of all handlers implementing perturbative partonic cascade model...
A concreate implementation of ClassDescriptionBase describing a concrete class with persistent data.
The DecayHandler is the base class of all handlers implementing the administration of decays of unsta...
Definition: DecayHandler.h:31
The HadronizationHandler is the base class of all handlers implementing models for hadronization of c...
HandlerBase is an abstract base class derived from the Interfaced class via the HandlerBaseT class ad...
Definition: HandlerBase.h:151
HandlerGroupBase is the base class for the templated HandlerGroup utility class to manage a group of ...
Definition: HandlerGroup.h:44
HandlerGroup is a templated utility class to manage a group of StepHandlers.
Definition: HandlerGroup.h:321
The MultipleInteractionHandler is the base class of all handlers implementing models for multiple int...
PersistentIStream is used to read persistent objects from a stream where they were previously written...
PersistentOStream is used to write objects persistently to a stream from which they can be read in ag...
RCPtr is a reference counted (smart) pointer.
Definition: RCPtr.h:60
TransientRCPtr is a simple wrapper around a bare pointer which can be assigned to and from an RCPtr a...
Definition: RCPtr.h:519
The SubProcessHandler class is used to handle a set of MEBase objects together with a PartonExtractor...
tCutsPtr cuts() const
Return a pointer to the kinematical cuts used.
void setupGroups()
Setup the step handler groups.
vector< HandlerGroupBase * > GroupVector
A vector of HandlerGroup pointers.
vector< ReweightPtr > ReweightVector
A vector of ReweightBase pointers.
CutsPtr theCuts
The pointer to the kinematical cuts used.
HandlerGroup< CascadeHandler > theCascadeGroup
The CascadeHandler group.
virtual ~SubProcessHandler()
Default destructor.
HandlerGroup< SubProcessHandler > theSubprocessGroup
The SubProcessHandler group.
virtual IBPtr fullclone() const
Make a clone of this object, possibly modifying the cloned object to make it sane.
const HandlerGroupBase & handlerGroup(Group::Handler) const
Access a step handler group.
tPExtrPtr pExtractor() const
Return a pointer to the parton extractor used.
MEVector & MEs()
Return a reference to the vector of parton matrix elements used.
virtual IBPtr clone() const
Make a simple clone of this object.
PExtrPtr thePartonExtractor
The pointer to the parton extractor used.
MEVector theMEs
The vector of partonic matrix elements to be used.
const MEVector & MEs() const
Return a reference to the vector of parton matrix elements used.
virtual void doinit()
Initialize this object after the setup phase before saving an EventGenerator to disk.
tCascHdlPtr CKKWHandler() const
Return a pointer (possibly null) to the assigned main CascadeHandler to be used as CKKW-reweighter.
GroupVector theGroups
The step handler groups.
const SubProcessHandler & operator=(const SubProcessHandler &)=delete
Private and non-existent assignment operator.
SubProcessHandler()
Default constructor.
SubProcessHandler(const SubProcessHandler &)
Copy-constructor.
static ClassDescription< SubProcessHandler > initSubProcessHandler
Describe a concreta class with persistent data.
static void Init()
Standard Init function used to initialize the interface.
const GroupVector & groups() const
Access the step handler groups.
void persistentOutput(PersistentOStream &os) const
Function used to write out object persistently.
ReweightVector preweights
The pre- and re-weight objects modifying all matrix element in this sub-process hander.
ReweightVector reweights
The pre- and re-weight objects modifying all matrix element in this sub-process hander.
HandlerGroup< MultipleInteractionHandler > theMultiGroup
The MultipleInteractionHandler group.
HandlerGroup< HadronizationHandler > theHadronizationGroup
The HadronizationHandler group.
void persistentInput(PersistentIStream &is, int version)
Function used to read in object persistently.
HandlerGroup< DecayHandler > theDecayGroup
The DecayHandler group.
virtual void doinitrun()
Initialize this object.
Handler
Enumeration for the type of HandlerGroups.
Definition: HandlerGroup.h:433
This is the main namespace within which all identifiers in ThePEG are declared.
Definition: FactoryBase.h:28
BaseClassTraits describes the base classes of the templated class.
Definition: ClassTraits.h:156
int NthBase
The type of the BaseN'th base class (int means there are no further base classes).
Definition: ClassTraits.h:161
static string className()
Return the name of class T.
Definition: ClassTraits.h:66
ClassTraitsType is an empty, non-polymorphic, base class.
Definition: ClassTraits.h:30