herwig is hosted by Hepforge, IPPP Durham
Herwig  7.2.1
Herwig::MPIHandler Class Reference

This class is responsible for generating additional semi hard partonic interactions. More...

#include <MPIHandler.h>

Inheritance diagram for Herwig::MPIHandler:

Public Types

typedef vector< SubHdlPtr > SubHandlerList
 A vector of SubProcessHandlers. More...
 
typedef vector< CutsPtr > CutsList
 A vector of Cuts. More...
 
typedef vector< ProHdlPtr > ProcessHandlerList
 A vector of ProcessHandlers. 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 &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 
 ReferenceCounted (const ReferenceCounted &)
 
ReferenceCountedoperator= (const ReferenceCounted &)
 
- Protected Member Functions inherited from ThePEG::Named
const Namedoperator= (const Named &other)
 
const string & name (const string &newName)
 

Private Member Functions

const SubHandlerListsubProcesses () const
 Access the list of sub-process handlers.
 
SubHandlerListsubProcesses ()
 Access the list of sub-process handlers.
 
const CutsListcuts () const
 Access the list of cuts.
 
CutsListcuts ()
 Access the list of cuts.
 
const ProcessHandlerListprocessHandlers () const
 Access the list of sub-process handlers.
 
ProcessHandlerListprocessHandlers ()
 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 $<n> = A(b)\sigma$, 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.
 
MPIHandleroperator= (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 SubProcessHandlers.
 
CutsList theCuts
 The kinematical cuts used for this collision handler.
 
ProcessHandlerList theProcessHandlers
 List of ProcessHandler used to sample different processes independently.
 
Selector< MPairtheMultiplicities
 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: $d\sigma/dp_T^2 = A \exp (- beta p_T^2)$. More...
 
int algorithm_
 Switch to be set from outside to determine the algorithm used for UE activity.
 
Energy2 invRadius_
 Inverse hadron Radius squared $ (\mu^2) $. 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 MPIHandlercurrentHandler_
 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 MPIHandlercurrentHandler ()
 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)
 

Detailed Description

This class is responsible for generating additional semi hard partonic interactions.

Author
Manuel B"ahr
See also
The interfaces defined for MPIHandler.
ProcessHandler
ShowerHandler
HwRemDecayer

Definition at line 45 of file MPIHandler.h.

Member Typedef Documentation

◆ CutsList

typedef vector<CutsPtr> Herwig::MPIHandler::CutsList

A vector of Cuts.

Definition at line 67 of file MPIHandler.h.

◆ MPair

typedef pair<unsigned int, unsigned int> Herwig::MPIHandler::MPair

A pair of multiplicities: hard, soft.

Definition at line 76 of file MPIHandler.h.

◆ ProcessHandlerList

typedef vector<ProHdlPtr> Herwig::MPIHandler::ProcessHandlerList

A vector of ProcessHandlers.

Definition at line 70 of file MPIHandler.h.

◆ SubHandlerList

typedef vector<SubHdlPtr> Herwig::MPIHandler::SubHandlerList

A vector of SubProcessHandlers.

Definition at line 64 of file MPIHandler.h.

◆ XSVector

typedef vector<CrossSection> Herwig::MPIHandler::XSVector

A vector of cross sections.

Definition at line 73 of file MPIHandler.h.

Member Function Documentation

◆ clean()

virtual void Herwig::MPIHandler::clean ( )
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.

◆ clone()

virtual IBPtr Herwig::MPIHandler::clone ( ) const
protectedvirtual

Make a simple clone of this object.

Returns
a pointer to the new object.

Implements ThePEG::InterfacedBase.

◆ diffractiveXSec()

CrossSection Herwig::MPIHandler::diffractiveXSec ( ) const
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.

◆ eventHandler()

tEHPtr Herwig::MPIHandler::eventHandler ( ) const
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.

◆ fullclone()

virtual IBPtr Herwig::MPIHandler::fullclone ( ) const
protectedvirtual

Make a clone of this object, possibly modifying the cloned object to make it sane.

Returns
a pointer to the new object.

Reimplemented from ThePEG::InterfacedBase.

◆ generate()

virtual tStdXCombPtr Herwig::MPIHandler::generate ( unsigned int  sel = 0)
virtual

Select a StandardXComb according to it's weight.

Returns
that StandardXComb Object
Parameters
selis the subprocess that should be returned, if more than one is specified.

Implements Herwig::UEBase.

◆ Init()

static void Herwig::MPIHandler::Init ( )
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.

◆ MultDistribution()

void Herwig::MPIHandler::MultDistribution ( string  filename) const
private

Debug method to check the individual probabilities.

Parameters
filenameis the file the output gets written to

◆ multiplicity()

virtual unsigned int Herwig::MPIHandler::multiplicity ( unsigned int  sel = 0)
virtual

Sample from the pretabulated multiplicity distribution.

Returns
the number of extra events in this collision

Implements Herwig::UEBase.

◆ nonDiffractiveXSec()

CrossSection Herwig::MPIHandler::nonDiffractiveXSec ( ) const
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.

◆ operator=()

MPIHandler& Herwig::MPIHandler::operator= ( const MPIHandler )
privatedelete

The assignment operator is private and must never be called.

In fact, it should not even be implemented.

◆ OverlapFunction()

InvArea Herwig::MPIHandler::OverlapFunction ( Length  b,
Energy2  mu2 = ZERO 
) const
private

Return the value of the Overlap function A(b) for a given impact parameter b.

Parameters
bimpact parameter
mu2= inv hadron radius squared. 0 will use the value of invRadius_
Returns
inverse area.

◆ persistentInput()

void Herwig::MPIHandler::persistentInput ( PersistentIStream is,
int  version 
)

Function used to read in object persistently.

Parameters
isthe persistent input stream read from.
versionthe version number of the object when written.

◆ persistentOutput()

void Herwig::MPIHandler::persistentOutput ( PersistentOStream os) const

Function used to write out object persistently.

Parameters
osthe persistent output stream written to.

◆ Probs()

void Herwig::MPIHandler::Probs ( XSVector  UEXSecs)
private

Method to calculate the individual probabilities for N scatters in the event.

Parameters
UEXSecsis(are) the inclusiv cross section(s) for the UE process(es).

◆ slopeDiff()

InvEnergy2 Herwig::MPIHandler::slopeDiff ( CrossSection  softXSec,
Energy2  softMu2 = ZERO 
) const
private

Difference of the calculated elastic slope and the experimental one from slopeExp.

Parameters
softXSec= the soft cross section that is used
softMu2= the soft radius, if 0 the hard radius will be used

◆ slopeExp()

InvEnergy2 Herwig::MPIHandler::slopeExp ( ) const
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.

◆ softMultiplicity()

virtual unsigned int Herwig::MPIHandler::softMultiplicity ( ) const
inlinevirtual

Get the soft multiplicity from the pretabulated multiplicity distribution.

Generated in multiplicity in the first place.

Returns
the number of extra soft events in this collision

Reimplemented from Herwig::UEBase.

Definition at line 121 of file MPIHandler.h.

References Herwig::RandomHelpers::generate().

◆ statLevel()

int Herwig::MPIHandler::statLevel ( ) const
inline

The level of statistics.

Controlls the amount of statistics written out after each run to the EventGenerators .out file. Simply the EventHandler method is called here.

Definition at line 191 of file MPIHandler.h.

◆ totalXSecDiff()

CrossSection Herwig::MPIHandler::totalXSecDiff ( CrossSection  softXSec,
Energy2  softMu2 = ZERO 
) const
private

Difference of the calculated total cross section and the experimental one from totalXSecExp.

Parameters
softXSec= the soft cross section that is used
softMu2= the soft radius, if 0 the hard radius will be used

◆ totalXSecExp()

CrossSection Herwig::MPIHandler::totalXSecExp ( ) const
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.

Member Data Documentation

◆ beta_

InvEnergy2 Herwig::MPIHandler::beta_
private

slope to the non-perturbative pt spectrum: $d\sigma/dp_T^2 = A \exp (- beta p_T^2)$.

Its value is determined durint initialization.

Definition at line 515 of file MPIHandler.h.

◆ colourDisrupt_

double Herwig::MPIHandler::colourDisrupt_
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.

◆ identicalToUE_

int Herwig::MPIHandler::identicalToUE_
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.

◆ invRadius_

Energy2 Herwig::MPIHandler::invRadius_
private

Inverse hadron Radius squared $ (\mu^2) $.

Used inside the overlap function.

Definition at line 525 of file MPIHandler.h.

◆ PtOfQCDProc_

Energy Herwig::MPIHandler::PtOfQCDProc_
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.

◆ softInt_

bool Herwig::MPIHandler::softInt_
private

Flag to store whether soft interactions, i.e.

pt < ptmin should be simulated.

Definition at line 544 of file MPIHandler.h.

◆ softMult_

unsigned int Herwig::MPIHandler::softMult_
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.

◆ theHandler

tEHPtr Herwig::MPIHandler::theHandler
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.

◆ totalXSecExp_

CrossSection Herwig::MPIHandler::totalXSecExp_
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.


The documentation for this class was generated from the following file: