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 SimpleQCD: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