Herwig
7.2.1
|
This class is responsible for generating additional semi hard partonic interactions. More...
#include <MPIHandler.h>
Public Types | |
typedef vector< SubHdlPtr > | SubHandlerList |
A vector of SubProcessHandler s. More... | |
typedef vector< CutsPtr > | CutsList |
A vector of Cut s. More... | |
typedef vector< ProHdlPtr > | ProcessHandlerList |
A vector of ProcessHandler s. More... | |
typedef vector< CrossSection > | XSVector |
A vector of cross sections. More... | |
typedef pair< unsigned int, unsigned int > | MPair |
A pair of multiplicities: hard, soft. More... | |
Public Types inherited from ThePEG::InterfacedBase | |
enum | InitState |
Public Types inherited from ThePEG::Pointer::ReferenceCounted | |
typedef unsigned int | CounterType |
Public Member Functions | |
virtual void | initialize () |
Initialize this Multiple Interaction handler and all related objects needed to generate additional events. | |
virtual void | finalize () |
Finalize this Multiple Interaction handler and all related objects needed to generate additional events. | |
virtual void | clean () |
Clean up the XCombs from our subprocesses after each event. More... | |
void | statistics () const |
Write out accumulated statistics about integrated cross sections. | |
int | statLevel () const |
The level of statistics. More... | |
CrossSection | hardXSec () const |
Return the hard cross section above ptmin. | |
CrossSection | softXSec () const |
Return the soft cross section below ptmin. | |
CrossSection | inelasticXSec () const |
Return the inelastic cross section. | |
CrossSection | nonDiffractiveXSec () const |
Return the non-diffractive cross section assumed by the model. More... | |
CrossSection | diffractiveXSec () const |
Return the diffractive cross section assumed by the model. More... | |
Standard constructors and destructors. | |
MPIHandler () | |
The default constructor. | |
virtual | ~MPIHandler () |
The destructor. | |
Methods for the MPI generation. | |
virtual bool | beamOK () const |
Return true or false depending on the generator setup. | |
virtual bool | softInt () const |
Return true or false depending on whether soft interactions are enabled. | |
virtual unsigned int | softMultiplicity () const |
Get the soft multiplicity from the pretabulated multiplicity distribution. More... | |
virtual unsigned int | multiplicity (unsigned int sel=0) |
Sample from the pretabulated multiplicity distribution. More... | |
virtual tStdXCombPtr | generate (unsigned int sel=0) |
Select a StandardXComb according to it's weight. More... | |
Functions used by the persistent I/O system. | |
void | persistentOutput (PersistentOStream &os) const |
Function used to write out object persistently. More... | |
void | persistentInput (PersistentIStream &is, int version) |
Function used to read in object persistently. More... | |
Virtual functions used for the generation of additional | |
interactions . | |
Public Member Functions inherited from ThePEG::Interfaced | |
virtual bool | defaultInit () |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
PPtr | getParticle (PID) const |
PDPtr | getParticleData (PID) const |
bool | used () const |
void | useMe () const |
tEGPtr | generator () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
Public Member Functions inherited from ThePEG::InterfacedBase | |
string | fullName () const |
string | name () const |
string | path () const |
string | comment () const |
void | setup (istream &is) |
virtual void | debugme () const |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
void | update () |
void | init () |
virtual bool | preInitialize () const |
void | initrun () |
void | finish () |
void | touch () |
void | reset () |
void | clear () |
InitState | state () const |
bool | locked () const |
bool | touched () const |
void | persistentOutput (PersistentOStream &os) const |
void | persistentInput (PersistentIStream &is, int version) |
Public Member Functions inherited from ThePEG::Base | |
void | debug () const |
Public Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
CounterType | referenceCount () const |
Public Member Functions inherited from ThePEG::Named | |
Named (const string &newName=string()) | |
Named (const Named &)=default | |
const string & | name () const |
bool | operator== (const Named &other) const |
bool | operator< (const Named &other) const |
Static Public Member Functions | |
static void | Init () |
The standard Init function used to initialize the interfaces. More... | |
Static Public Member Functions inherited from Herwig::UEBase | |
static void | Init () |
The standard Init function used to initialize the interfaces. More... | |
Static Public Member Functions inherited from ThePEG::Interfaced | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::InterfacedBase | |
static void | Init () |
Static Public Member Functions inherited from ThePEG::Base | |
static void | Init () |
Protected Member Functions | |
Clone Methods. | |
virtual IBPtr | clone () const |
Make a simple clone of this object. More... | |
virtual IBPtr | fullclone () const |
Make a clone of this object, possibly modifying the cloned object to make it sane. More... | |
Protected Member Functions inherited from ThePEG::Interfaced | |
void | reporeg (IBPtr object, string name) const |
bool | setDefaultReference (PtrT &ptr, string classname, string objectname) |
Interfaced (const string &newName) | |
Interfaced (const Interfaced &i) | |
void | setGenerator (tEGPtr generator) |
Protected Member Functions inherited from ThePEG::InterfacedBase | |
InterfacedBase (string newName) | |
InterfacedBase (const InterfacedBase &i) | |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
virtual void | readSetup (istream &is) |
virtual void | doupdate () |
virtual void | doinit () |
virtual void | doinitrun () |
virtual void | dofinish () |
virtual IVector | getReferences () |
virtual void | rebind (const TranslationMap &) |
Protected Member Functions inherited from ThePEG::Pointer::ReferenceCounted | |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
ReferenceCounted (const ReferenceCounted &) | |
ReferenceCounted & | operator= (const ReferenceCounted &) |
Protected Member Functions inherited from ThePEG::Named | |
const Named & | operator= (const Named &other) |
const string & | name (const string &newName) |
Private Member Functions | |
const SubHandlerList & | subProcesses () const |
Access the list of sub-process handlers. | |
SubHandlerList & | subProcesses () |
Access the list of sub-process handlers. | |
const CutsList & | cuts () const |
Access the list of cuts. | |
CutsList & | cuts () |
Access the list of cuts. | |
const ProcessHandlerList & | processHandlers () const |
Access the list of sub-process handlers. | |
ProcessHandlerList & | processHandlers () |
Access the list of sub-process handlers. | |
void | Probs (XSVector UEXSecs) |
Method to calculate the individual probabilities for N scatters in the event. More... | |
void | MultDistribution (string filename) const |
Debug method to check the individual probabilities. More... | |
InvArea | OverlapFunction (Length b, Energy2 mu2=ZERO) const |
Return the value of the Overlap function A(b) for a given impact parameter b. More... | |
double | poisson (Length b, CrossSection sigma, unsigned int N, Energy2 mu2=ZERO) const |
Method to calculate the poisson probability for expectation value , and multiplicity N. | |
CrossSection | totalXSecExp () const |
Returns the total cross section for the current CMenergy. More... | |
CrossSection | totalXSecDiff (CrossSection softXSec, Energy2 softMu2=ZERO) const |
Difference of the calculated total cross section and the experimental one from totalXSecExp. More... | |
InvEnergy2 | slopeDiff (CrossSection softXSec, Energy2 softMu2=ZERO) const |
Difference of the calculated elastic slope and the experimental one from slopeExp. More... | |
InvEnergy2 | slopeExp () const |
Returns the value of the elastic slope for the current CMenergy. More... | |
void | overrideUECuts () |
Calculate the minimal transverse momentum from the extrapolation. | |
MPIHandler & | operator= (const MPIHandler &)=delete |
The assignment operator is private and must never be called. More... | |
Private Attributes | |
tEHPtr | theHandler |
A pointer to the EventHandler that calls us. More... | |
SubHandlerList | theSubProcesses |
The list of SubProcessHandler s. | |
CutsList | theCuts |
The kinematical cuts used for this collision handler. | |
ProcessHandlerList | theProcessHandlers |
List of ProcessHandler used to sample different processes independently. | |
Selector< MPair > | theMultiplicities |
A ThePEG::Selector where the individual Probabilities P_N are stored and the actual Multiplicities can be selected. | |
unsigned int | softMult_ |
Variable to store the soft multiplicity generated for a event. More... | |
vector< int > | additionalMultiplicities_ |
Variable to store the multiplicity of the second hard process. | |
int | identicalToUE_ |
Variable to store the information, which process is identical to the UE one (QCD dijets). More... | |
Energy | PtOfQCDProc_ |
Variable to store the minimal pt of the process that is identical to the UE one. More... | |
Energy | Ptmin_ |
Variable to store the parameter ptmin. | |
CrossSection | hardXSec_ |
Variable to store the hard cross section above ptmin. | |
CrossSection | softXSec_ |
Variable to store the final soft cross section below ptmin. | |
CrossSection | inelXSec_ |
Variable to store the inelastic cross section. | |
CrossSection | totalXSecExp_ |
Variable to store the total pp cross section (assuming rho=0!) as measured at LHC. More... | |
Energy2 | softMu2_ |
Variable to store the soft radius, that is calculated during initialization for the two-component model. | |
InvEnergy2 | beta_ |
slope to the non-perturbative pt spectrum: . More... | |
int | algorithm_ |
Switch to be set from outside to determine the algorithm used for UE activity. | |
Energy2 | invRadius_ |
Inverse hadron Radius squared . More... | |
unsigned int | numSubProcs_ |
Member variable to store the actual number of separate SubProcesses. | |
double | colourDisrupt_ |
Variable to store the relative number of colour disrupted connections to additional subprocesses. More... | |
bool | softInt_ |
Flag to store whether soft interactions, i.e. More... | |
bool | twoComp_ |
Flag to steer wheather the soft part has a different radius, that will be dynamically fixed. | |
unsigned int | DLmode_ |
Switch to determine which Donnachie & Landshoff parametrization should be used. | |
double | avgNhard_ |
Variable to store the average hard multiplicity. | |
double | avgNsoft_ |
Variable to store the average soft multiplicity. | |
unsigned int | energyExtrapolation_ |
Flag to store whether to calculate the minimal UE pt according to an extrapolation formula or whether to use MPIHandler:Cuts[0]:OneCuts[0]:MinKT. | |
Energy | EEparamA_ |
Parameters for the energy extrapolation formula. | |
Energy | EEparamB_ |
Energy | refScale_ |
Energy | pT0_ |
double | b_ |
Energy | offset_ |
double | diffratio_ =0.2 |
Parameters to set the fraction of diffractive cross section in the inelastic cross section. | |
Static Private Attributes | |
static const unsigned int | maxScatters_ = 99 |
Maximum number of scatters. | |
static MPIHandler * | currentHandler_ |
The current handler. | |
Friends | |
struct | Eikonalization |
Class for the integration is a friend to access private members. | |
struct | TotalXSecBisection |
struct | slopeAndTotalXSec |
struct | slopeInt |
struct | slopeBisection |
Simple access functions. | |
tEHPtr | eventHandler () const |
Return the ThePEG::EventHandler assigned to this handler. More... | |
virtual int | Algorithm () const |
Return theAlgorithm. | |
virtual Energy | Ptmin () const |
Return the ptmin parameter of the model. | |
virtual InvEnergy2 | beta () const |
Return the slope of the soft pt spectrum as calculated. | |
virtual Energy | PtForVeto () const |
Return the pt Cutoff of the Interaction that is identical to the UE one. | |
virtual unsigned int | additionalHardProcs () const |
Return the number of additional "hard" processes ( = multiple parton scattering) | |
virtual double | colourDisrupt () const |
Return the fraction of colour disrupted connections to the suprocesses. | |
static const MPIHandler * | currentHandler () |
Return the current handler. | |
Additional Inherited Members | |
Public Attributes inherited from ThePEG::InterfacedBase | |
initializing | |
uninitialized | |
initialized | |
runready | |
Public Attributes inherited from ThePEG::Pointer::ReferenceCounted | |
const unsigned long | uniqueId |
Static Protected Member Functions inherited from ThePEG::Interfaced | |
static void | registerRepository (IBPtr) |
static void | registerRepository (IBPtr, string newName) |
This class is responsible for generating additional semi hard partonic interactions.
Definition at line 45 of file MPIHandler.h.
typedef vector<CutsPtr> Herwig::MPIHandler::CutsList |
A vector of Cut
s.
Definition at line 67 of file MPIHandler.h.
typedef pair<unsigned int, unsigned int> Herwig::MPIHandler::MPair |
A pair of multiplicities: hard, soft.
Definition at line 76 of file MPIHandler.h.
typedef vector<ProHdlPtr> Herwig::MPIHandler::ProcessHandlerList |
A vector of ProcessHandler
s.
Definition at line 70 of file MPIHandler.h.
typedef vector<SubHdlPtr> Herwig::MPIHandler::SubHandlerList |
A vector of SubProcessHandler
s.
Definition at line 64 of file MPIHandler.h.
typedef vector<CrossSection> Herwig::MPIHandler::XSVector |
A vector of cross sections.
Definition at line 73 of file MPIHandler.h.
|
virtual |
Clean up the XCombs from our subprocesses after each event.
ThePEG cannot see them, so the usual cleaning misses these.
Reimplemented from Herwig::UEBase.
|
protectedvirtual |
Make a simple clone of this object.
Implements ThePEG::InterfacedBase.
|
inlinevirtual |
Return the diffractive cross section assumed by the model.
For now the diffractive cross section is seen as a fixed part of the inelastic cross section. TODO: Energy dependence and/or Include diffraction in Eikonalisation.
Implements Herwig::UEBase.
Definition at line 222 of file MPIHandler.h.
|
inline |
Return the ThePEG::EventHandler assigned to this handler.
This methods shadows ThePEG::StepHandler::eventHandler(), because it is not virtual in ThePEG::StepHandler. This is ok, because this method would give a null-pointer at some stages, whereas this method gives access to the explicitely copied pointer (in initialize()) to the ThePEG::EventHandler.
Definition at line 238 of file MPIHandler.h.
|
protectedvirtual |
Make a clone of this object, possibly modifying the cloned object to make it sane.
Reimplemented from ThePEG::InterfacedBase.
|
virtual |
Select a StandardXComb according to it's weight.
sel | is the subprocess that should be returned, if more than one is specified. |
Implements Herwig::UEBase.
|
static |
The standard Init function used to initialize the interfaces.
Called exactly once for each class by the class description system before the main function starts or when this class is dynamically loaded.
|
private |
Debug method to check the individual probabilities.
filename | is the file the output gets written to |
|
virtual |
Sample from the pretabulated multiplicity distribution.
Implements Herwig::UEBase.
|
inlinevirtual |
Return the non-diffractive cross section assumed by the model.
TODO: See comment at diffractiveXSec.
Implements Herwig::UEBase.
Definition at line 212 of file MPIHandler.h.
|
privatedelete |
The assignment operator is private and must never be called.
In fact, it should not even be implemented.
|
private |
Return the value of the Overlap function A(b) for a given impact parameter b.
b | impact parameter |
mu2 | = inv hadron radius squared. 0 will use the value of invRadius_ |
void Herwig::MPIHandler::persistentInput | ( | PersistentIStream & | is, |
int | version | ||
) |
Function used to read in object persistently.
is | the persistent input stream read from. |
version | the version number of the object when written. |
void Herwig::MPIHandler::persistentOutput | ( | PersistentOStream & | os | ) | const |
Function used to write out object persistently.
os | the persistent output stream written to. |
|
private |
Method to calculate the individual probabilities for N scatters in the event.
UEXSecs | is(are) the inclusiv cross section(s) for the UE process(es). |
|
private |
Difference of the calculated elastic slope and the experimental one from slopeExp.
softXSec | = the soft cross section that is used |
softMu2 | = the soft radius, if 0 the hard radius will be used |
|
private |
Returns the value of the elastic slope for the current CMenergy.
The decision which parametrization will be used is steered by a external parameter of this class.
|
inlinevirtual |
Get the soft multiplicity from the pretabulated multiplicity distribution.
Generated in multiplicity in the first place.
Reimplemented from Herwig::UEBase.
Definition at line 121 of file MPIHandler.h.
References Herwig::RandomHelpers::generate().
|
inline |
The level of statistics.
Controlls the amount of statistics written out after each run to the EventGenerator
s .out
file. Simply the EventHandler method is called here.
Definition at line 191 of file MPIHandler.h.
|
private |
Difference of the calculated total cross section and the experimental one from totalXSecExp.
softXSec | = the soft cross section that is used |
softMu2 | = the soft radius, if 0 the hard radius will be used |
|
private |
Returns the total cross section for the current CMenergy.
The decision which parametrization will be used is steered by a external parameter of this class.
|
private |
slope to the non-perturbative pt spectrum: .
Its value is determined durint initialization.
Definition at line 515 of file MPIHandler.h.
|
private |
Variable to store the relative number of colour disrupted connections to additional subprocesses.
This variable is used in Herwig::HwRemDecayer but store here, to have access to all parameters through one Object.
Definition at line 538 of file MPIHandler.h.
|
private |
Variable to store the information, which process is identical to the UE one (QCD dijets).
0 means "real" hard one n>0 means the nth additional hard scatter -1 means no one!
Definition at line 468 of file MPIHandler.h.
|
private |
Inverse hadron Radius squared .
Used inside the overlap function.
Definition at line 525 of file MPIHandler.h.
|
private |
Variable to store the minimal pt of the process that is identical to the UE one.
This only has to be set, if it can't be determined automatically (i.e. when reading QCD LesHouches files in).
Definition at line 475 of file MPIHandler.h.
|
private |
Flag to store whether soft interactions, i.e.
pt < ptmin should be simulated.
Definition at line 544 of file MPIHandler.h.
|
private |
Variable to store the soft multiplicity generated for a event.
This has to be stored as it is generated at the time of the hard additional interactions but used later on.
Definition at line 454 of file MPIHandler.h.
|
private |
A pointer to the EventHandler that calls us.
Has to be saved, because the method eventHandler() inherited from ThePEG::StepHandler returns a null-pointer sometimes. Leif changed that in r1053 so that a valid pointer is present, when calling doinitrun().
Definition at line 426 of file MPIHandler.h.
|
private |
Variable to store the total pp cross section (assuming rho=0!) as measured at LHC.
If this variable is set, this value is used in the subsequent run instead of any of the Donnachie-Landshoff parametrizations.
Definition at line 503 of file MPIHandler.h.