Simulation of several hard processes in one event¶
In this section we show how several hard processes can be simulated in Herwig. To achieve that, the hard processes have to be specified along with the cuts that should be used for them. We will choose the example of like-sign W production as illustrative example. We start with the conventional hard process and its cuts, where we select only \(W^+\) production and decay to \(e^+\nu_e\)
cd /Herwig/MatrixElements
insert SubProcess:MatrixElements[0] MEqq2W2ff
# only W+
set MEqq2W2ff:Wcharge 1
# only positrons
set MEqq2W2ff:Process 3
To modify the cuts on that process we have to change the following
cd /Herwig/Cuts
set LeptonKtCut:MinKT 5.0*GeV
set LeptonKtCut:MaxEta 2.5
# inv mass cut on lepton pairs
set MassCut:MinM 0.*GeV
Now we can start adding additional hard processes. This is done in the MPIHandler
class and always needs a SubProcessHandler
that has a MatrixElement assigned and a compulsory reference to a Cuts
object. This reference can be an existing one, in the case where
we want to use identical cuts for the processes, but can also be an independent instance. To create such an independent instance we do
cd /Herwig/UnderlyingEvent/
# cut on pt. Without a specific matcher object, it works on all particles
create ThePEG::SimpleKTCut DPKtCut SimpleKTCut.so
set DPKtCut:MinKT 10
set DPKtCut:MaxEta 2.5
# create the cuts object for DP1
create ThePEG::Cuts DP1Cuts
# This should always be 2*MinKT!!
set DP1Cuts:MHatMin 20
insert DP1Cuts:OneCuts 0 DPKtCut
We first created an instance of the class SimpleKTCut
to implement a cut on the transverse momentum and rapidity of the outgoing
particles. This instance then has to be assigned to the instance of the Cuts
object, DP1Cuts
.
To create a valid SubProcessHandler we have to specify:
cd /Herwig/UnderlyingEvent/
create ThePEG::SubProcessHandler DP1
insert DP1:MatrixElements 0 /Herwig/MatrixElements/MEqq2W2ff
set DP1:PartonExtractor /Herwig/Partons/QCDExtractor
We have assigned the reference to the same MatrixElement
instance and therefore also have \(W^+\) production and decay to positrons.
The PartonExtractor
is needed to extract the partons from the beam particles but is always the reference to the QCDExtractor
.
The last step now is to assign the subprocess and cuts instance to the MPIHandler
and select the multiplicity at which they should appear.
In our case this is of course simply one, but in the case of e.g. b-quark pairs or QCD dijets this may be different from one.
cd /Herwig/UnderlyingEvent/
# set the subprocesses and corresponding cuts
# 0 is reserved for the "usual" underlying events
# Each SubProcessHandler must be accompanied by a Cuts object!
insert MPIHandler:SubProcessHandlers 1 DP1
insert MPIHandler:Cuts 1 DP1Cuts
# now set what multiplicities you want. index = 0 means the first
# ADDITIONAL hard process
# this is SubProcessHandler 1 with multiplicity 1
insert MPIHandler:additionalMultiplicities 0 1