Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8309034
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
32 KB
Subscribers
None
View Options
diff --git a/PDF/HwRemDecayer.h b/PDF/HwRemDecayer.h
--- a/PDF/HwRemDecayer.h
+++ b/PDF/HwRemDecayer.h
@@ -1,706 +1,706 @@
// -*- C++ -*-
//
// HwRemDecayer.h is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2011 The Herwig Collaboration
//
// Herwig is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
#ifndef HERWIG_HwRemDecayer_H
#define HERWIG_HwRemDecayer_H
//
// This is the declaration of the HwRemDecayer class.
//
#include "ThePEG/PDT/RemnantDecayer.h"
#include "ThePEG/Handlers/EventHandler.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/EventRecord/SubProcess.h"
#include "ThePEG/PDF/BeamParticleData.h"
#include "Herwig/Shower/Core/Couplings/ShowerAlpha.h"
#include "Herwig/PDT/StandardMatchers.h"
#include "ThePEG/PDT/StandardMatchers.h"
#include "HwRemDecayer.fh"
namespace Herwig {
using namespace ThePEG;
/**
* The HwRemDecayer class is responsible for the decay of the remnants. Additional
* secondary scatters have to be evolved backwards to a gluon, the
* first/hard interaction has to be evolved back to a valence quark.
* This is all generated inside this class,
* which main methods are then called by the ShowerHandler.
*
* A simple forced splitting algorithm is used.
* This takes the Remnant object produced from the PDF and backward
* evolution (hadron - parton) and produce partons with the remaining
* flavours and with the correct colour connections.
*
* The algorithim operates by starting with the parton which enters the hard process.
* If this is from the sea there is a forced branching to produce the antiparticle
* from a gluon branching. If the parton entering the hard process was a gluon, or
* a gluon was produced from the first step of the algorithm, there is then a further
* branching back to a valence parton. After these partons have been produced a quark or
* diquark is produced to give the remaining valence content of the incoming hadron.
*
* The forced branching are generated using a scale between QSpac and EmissionRange times
* the minimum scale. The energy fractions are then distributed using
* \f[\frac{\alpha_S}{2\pi}\frac{P(z)}{z}f(x/z,\tilde{q})\f]
* with the massless splitting functions.
*
* \author Manuel B\"ahr
*
* @see \ref HwRemDecayerInterfaces "The interfaces"
* defined for HwRemDecayer.
*/
class HwRemDecayer: public RemnantDecayer {
public:
/** Typedef to store information about colour partners */
typedef vector<pair<tPPtr, tPPtr> > PartnerMap;
public:
/**
* The default constructor.
*/
HwRemDecayer() : allowTop_(false), multiPeriph_(false), quarkPair_(false),
ptmin_(-1.*GeV), beta_(ZERO),
maxtrySoft_(10),
colourDisrupt_(1.0),
- ladderbFactor_(1.0),
+ ladderbFactor_(0.0),
ladderPower_(-0.08),
ladderNorm_(1.0),
gaussWidth_(0.1),
valOfN_(0),
initTotRap_(0),
_kinCutoff(0.75*GeV),
_forcedSplitScale(2.5*GeV),
_range(1.1), _zbin(0.05),_ybin(0.),
_nbinmax(100), DISRemnantOpt_(0),
pomeronStructure_(0), mg_(ZERO) {}
/** @name Virtual functions required by the Decayer class. */
//@{
/**
* Check if this decayer can perfom the decay specified by the
* given decay mode.
* @return true if this decayer can handle the given mode, otherwise false.
*/
virtual bool accept(const DecayMode &) const {
return true;
}
/**
* Return true if this decayer can handle the extraction of the \a
* extracted parton from the given \a particle.
*/
virtual bool canHandle(tcPDPtr particle, tcPDPtr parton) const;
/**
* Return true if this decayed can extract more than one parton from
* a particle.
*/
virtual bool multiCapable() const {
return true;
}
/**
* Perform a decay for a given DecayMode and a given Particle instance.
* @param dm the DecayMode describing the decay.
* @param p the Particle instance to be decayed.
* @param step the step we are working on.
* @return a ParticleVector containing the decay products.
*/
virtual ParticleVector decay(const DecayMode & dm, const Particle & p, Step & step) const;
//@}
public:
/**
* struct that is used to catch exceptions which are thrown
* due to energy conservation issues of additional soft scatters
*/
struct ExtraSoftScatterVeto {};
/** @name Functions used by the persistent I/O system. */
//@{
/**
* Function used to write out object persistently.
* @param os the persistent output stream written to.
*/
void persistentOutput(PersistentOStream & os) const;
/**
* Function used to read in object persistently.
* @param is the persistent input stream read from.
* @param version the version number of the object when written.
*/
void persistentInput(PersistentIStream & is, int version);
//@}
/**
* 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.
*/
static void Init();
/**
* Do several checks and initialization, for remnantdecay inside ShowerHandler.
*/
void initialize(pair<tRemPPtr, tRemPPtr> rems, tPPair beam, Step & step,
Energy forcedSplitScale);
/**
* Initialize the soft scattering machinery.
* @param ptmin = the pt cutoff used in the UE model
* @param beta = slope of the soft pt-spectrum
*/
void initSoftInteractions(Energy ptmin, InvEnergy2 beta);
/**
* Perform the acual forced splitting.
* @param partons is a pair of ThePEG::Particle pointers which store the final
* partons on which the shower ends.
* @param pdfs are pointers to the pdf objects for both beams
* @param first is a flage wether or not this is the first or a secondary interation
*/
void doSplit(pair<tPPtr, tPPtr> partons, pair<tcPDFPtr, tcPDFPtr> pdfs, bool first);
/**
* Perform the final creation of the diquarks. Set the remnant masses and do
* all colour connections.
* @param colourDisrupt = variable to control how many "hard" scatters
* are colour isolated
* @param softInt = parameter for the number of soft scatters
*/
void finalize(double colourDisrupt=0.0, unsigned int softInt=0);
/**
* Find the children
*/
void findChildren(tPPtr,vector<PPtr> &) const;
protected:
/** @name Clone Methods. */
//@{
/**
* Make a simple clone of this object.
* @return a pointer to the new object.
*/
virtual IBPtr clone() const {return new_ptr(*this);}
/** Make a clone of this object, possibly modifying the cloned object
* to make it sane.
* @return a pointer to the new object.
*/
virtual IBPtr fullclone() const {return new_ptr(*this);}
//@}
protected:
/** @name Standard Interfaced functions. */
//@{
/**
* Initialize this object after the setup phase before saving an
* EventGenerator to disk.
* @throws InitException if object could not be initialized properly.
*/
virtual void doinit() {
Interfaced::doinit();
_ybin=0.25/_zbin;
mg_ = getParticleData(ParticleID::g)->constituentMass();
}
//@}
private:
/**
* The static object used to initialize the description of this class.
* Indicates that this is a concrete class with persistent data.
*/
static ClassDescription<HwRemDecayer> initHwRemDecayer;
/**
* The assignment operator is private and must never be called.
* In fact, it should not even be implemented.
*/
HwRemDecayer & operator=(const HwRemDecayer &);
public:
/**
* Simple struct to store info about baryon quark and di-quark
* constituents.
*/
struct HadronContent {
/**
* manually extract the valence flavour \a id.
*/
inline void extract(int id) {
for(unsigned int i=0; i<flav.size(); i++) {
if(id == sign*flav[i]){
if(hadron->id() == ParticleID::gamma ||
(hadron->id() == ParticleID::pomeron && pomeronStructure==1) ||
hadron->id() == ParticleID::reggeon) {
flav[0] = id;
flav[1] = -id;
extracted = 0;
flav.resize(2);
}
else if (hadron->id() == ParticleID::pomeron && pomeronStructure==0) {
extracted = 0;
}
else {
extracted = i;
}
break;
}
}
}
/**
* Return a proper particle ID assuming that \a id has been removed
* from the hadron.
*/
long RemID() const;
/**
* Method to determine whether \a parton is a quark from the sea.
* @return TRUE if \a parton is neither a valence quark nor a gluon.
*/
bool isSeaQuark(tcPPtr parton) const {
return ((parton->id() != ParticleID::g) && ( !isValenceQuark(parton) ) );
}
/**
* Method to determine whether \a parton is a valence quark.
*/
bool isValenceQuark(tcPPtr parton) const {
return isValenceQuark(parton->id());
}
/**
* Method to determine whether \a parton is a quark from the sea.
* @return TRUE if \a parton is neither a valence quark nor a gluon.
*/
bool isSeaQuarkData(tcPDPtr partonData) const {
return ((partonData->id() != ParticleID::g) && ( !isValenceQuarkData(partonData) ) );
}
/**
* Method to determine whether \a parton is a valence quark.
*/
bool isValenceQuarkData(tcPDPtr partonData) const {
int id(sign*partonData->id());
return find(flav.begin(),flav.end(),id) != flav.end();
}
/**
* Method to determine whether \a parton is a valence quark.
*/
bool isValenceQuark(int id) const {
return find(flav.begin(),flav.end(),sign*id) != flav.end();
}
/** The valence flavours of the corresponding baryon. */
vector<int> flav;
/** The array index of the extracted particle. */
int extracted;
/** -1 if the particle is an anti-particle. +1 otherwise. */
int sign;
/** The ParticleData objects of the hadron */
tcPDPtr hadron;
/** Pomeron treatment */
unsigned int pomeronStructure;
};
/**
* Return the hadron content objects for the incoming particles.
*/
const pair<HadronContent, HadronContent>& content() const {
return theContent;
}
/**
* Return a HadronContent struct from a PPtr to a hadron.
*/
HadronContent getHadronContent(tcPPtr hadron) const;
/**
* Set the hadron contents.
*/
void setHadronContent(tPPair beam) {
theContent.first = getHadronContent(beam.first);
theContent.second = getHadronContent(beam.second);
}
private:
/**
* Do the forced Splitting of the Remnant with respect to the
* extracted parton \a parton.
* @param parton = PPtr to the parton going into the subprocess.
* @param content = HadronContent struct to keep track of flavours.
* @param rem = Pointer to the ThePEG::RemnantParticle.
* @param used = Momentum vector to keep track of remaining momenta.
* @param partners = Vector of pairs filled with tPPtr to the particles
* which should be colour connected.
* @param pdf pointer to the PDF Object which is used for this particle
* @param first = Flag for the first interaction.
*/
void split(tPPtr parton, HadronContent & content, tRemPPtr rem,
Lorentz5Momentum & used, PartnerMap & partners, tcPDFPtr pdf, bool first);
/**
* Merge the colour lines of two particles
* @param p1 = Pointer to particle 1
* @param p2 = Pointer to particle 2
* @param anti = flag to indicate, if (anti)colour was extracted as first parton.
*/
void mergeColour(tPPtr p1, tPPtr p2, bool anti) const;
/**
* Set the colour connections.
* @param partners = Object that holds the information which particles to connect.
* @param anti = flag to indicate, if (anti)colour was extracted as first parton.
* @param disrupt parameter for disruption of the colour structure
*/
void fixColours(PartnerMap partners, bool anti, double disrupt) const;
/**
* Set the momenta of the Remnants properly and boost the decay particles.
*/
void setRemMasses() const;
/**
* This creates a parton from the remaining flavours of the hadron. The
* last parton used was a valance parton, so only 2 (or 1, if meson) flavours
* remain to be used.
*/
PPtr finalSplit(const tRemPPtr rem, long remID,
Lorentz5Momentum usedMomentum) const {
// Create the remnant and set its momentum, also reset all of the decay
// products from the hadron
PPtr remnant = new_ptr(Particle(getParticleData(remID)));
Lorentz5Momentum prem(rem->momentum()-usedMomentum);
prem.setMass(getParticleData(remID)->constituentMass());
prem.rescaleEnergy();
remnant->set5Momentum(prem);
// Add the remnant to the step, but don't do colour connections
thestep->addDecayProduct(rem,remnant,false);
return remnant;
}
/**
* This takes the particle and find a splitting for np -> p + child and
* creates the correct kinematics and connects for such a split. This
* Splitting has an upper bound on qtilde given by the energy argument
* @param rem The Remnant
* @param child The PDG code for the outgoing particle
* @param oldQ The maximum scale for the evolution
* @param oldx The fraction of the hadron's momentum carried by the last parton
* @param pf The momentum of the last parton at input and after branching at output
* @param p The total emitted momentum
* @param content The content of the hadron
*/
PPtr forceSplit(const tRemPPtr rem, long child, Energy &oldQ, double &oldx,
Lorentz5Momentum &pf, Lorentz5Momentum &p,
HadronContent & content) const;
/**
* Check if a particle is a parton from a hadron or not
* @param parton The parton to be tested
*/
bool isPartonic(tPPtr parton) const;
/** @name Soft interaction methods. */
//@{
/**
* Produce pt values according to dN/dp_T = N p_T exp(-beta_*p_T^2)
*/
Energy softPt() const;
/**
* Get the 2 pairs of 5Momenta for the scattering. Needs calling of
* initSoftInteractions.
*/
void softKinematics(Lorentz5Momentum &r1, Lorentz5Momentum &r2,
Lorentz5Momentum &g1, Lorentz5Momentum &g2) const;
/**
* Create N soft gluon interactions
*/
void doSoftInteractions(unsigned int N){
if(!multiPeriph_){
doSoftInteractions_old(N);}
else{
doSoftInteractions_multiPeriph(N);
}
}
/**
* Create N soft gluon interactions (old version)
*/
void doSoftInteractions_old(unsigned int N);
/**
* Create N soft gluon interactions - multiperhpheral kinematics
*/
void doSoftInteractions_multiPeriph(unsigned int N);
/**
* Method to add a particle to the step
* @param parent = pointer to the parent particle
* @param id = Particle ID of the newly created particle
* @param p = Lorentz5Momentum of the new particle
*/
tPPtr addParticle(tcPPtr parent, long id, Lorentz5Momentum p) const;
//@}
/**
* A flag which indicates, whether the extracted valence quark was a
* anti particle.
*/
pair<bool, bool> theanti;
/**
* variable to sum up the x values of the extracted particles
*/
pair<double, double> theX;
/**Pair of HadronContent structs to know about the quark content of the beams*/
pair<HadronContent, HadronContent> theContent;
/**Pair of Lorentz5Momentum to keep track of the forced splitting product momenta*/
pair<Lorentz5Momentum, Lorentz5Momentum> theUsed;
/**
* Pair of PartnerMap's to store the particles, which will be colour
* connected in the end.
*/
pair<PartnerMap, PartnerMap> theMaps;
/**
* Variable to hold a pointer to the current step. The variable is used to
* determine, wether decay(const DecayMode & dm, const Particle & p, Step & step)
* has been called in this event or not.
*/
StepPtr thestep;
/**
* Pair of Remnant pointers. This is needed to boost
* in the Remnant-Remnant CMF after all have been decayed.
*/
pair<RemPPtr, RemPPtr> theRems;
/**
* The beam particle data for the current incoming hadron
*/
mutable tcPPtr theBeam;
/**
* the beam data
*/
mutable Ptr<BeamParticleData>::const_pointer theBeamData;
/**
* The PDF for the current initial-state shower
*/
mutable tcPDFPtr _pdf;
private:
/**
* Switch to control handling of top quarks in proton
*/
bool allowTop_;
/**
* Switch to control using multiperipheral kinemaics
*/
bool multiPeriph_;
/**
* True if kinematics is to be calculated for quarks
*/
bool quarkPair_;
/** @name Soft interaction variables. */
//@{
/**
* Pair of soft Remnant pointers, i.e. Diquarks.
*/
tPPair softRems_;
/**
* ptcut of the UE model
*/
Energy ptmin_;
/**
* slope of the soft pt-spectrum: dN/dp_T = N p_T exp(-beta*p_T^2)
*/
InvEnergy2 beta_;
/**
* Maximum number of attempts for the regeneration of an additional
* soft scattering, before the number of scatters is reduced.
*/
unsigned int maxtrySoft_;
/**
* Variable to store the relative number of colour disrupted
* connections to additional soft subprocesses.
*/
double colourDisrupt_;
/**
* Variable to store the additive factor of the
multiperipheral ladder multiplicity.
*/
double ladderbFactor_;
/**
* Variable of the parameterization of the ladder multiplicity.
*/
double ladderPower_;
/**
* Variable of the parameterization of the ladder multiplicity.
*/
double ladderNorm_;
/**
* Variable to store the gaussian width of the
* fluctuation of the longitudinal momentum
* fraction.
*/
double gaussWidth_;
/**
* Variable to store the current total multiplicity
of a ladder.
*/
double valOfN_;
/**
* Variable to store the initial total rapidity between
of the remnants.
*/
double initTotRap_;
//@}
/** @name Forced splitting variables. */
//@{
/**
* The kinematic cut-off
*/
Energy _kinCutoff;
/**
* The PDF freezing scale as set in ShowerHandler
*/
Energy _forcedSplitScale;
/**
* Range for emission
*/
double _range;
/**
* Size of the bins in z for the interpolation
*/
double _zbin;
/**
* Size of the bins in y for the interpolation
*/
double _ybin;
/**
* Maximum number of bins for the z interpolation
*/
int _nbinmax;
/**
* Pointer to the object calculating the QCD coupling
*/
ShowerAlphaPtr _alphaS;
/**
* Pointer to the object calculating the QED coupling
*/
ShowerAlphaPtr _alphaEM;
/**
* Option for the DIS remnant
*/
unsigned int DISRemnantOpt_;
/**
* Option for the treatment of the pomeron structure
*/
unsigned int pomeronStructure_;
//@}
/**
* The gluon constituent mass.
*/
Energy mg_;
};
}
#include "ThePEG/Utilities/ClassTraits.h"
namespace ThePEG {
/** @cond TRAITSPECIALIZATIONS */
/** This template specialization informs ThePEG about the
* base classes of HwRemDecayer. */
template <>
struct BaseClassTrait<Herwig::HwRemDecayer,1> {
/** Typedef of the first base class of HwRemDecayer. */
typedef RemnantDecayer NthBase;
};
/** This template specialization informs ThePEG about the name of
* the HwRemDecayer class and the shared object where it is defined. */
template <>
struct ClassTraits<Herwig::HwRemDecayer>
: public ClassTraitsBase<Herwig::HwRemDecayer> {
/** Return a platform-independent class name */
static string className() { return "Herwig::HwRemDecayer"; }
/**
* The name of a file containing the dynamic library where the class
* HwRemDecayer is implemented. It may also include several, space-separated,
* libraries if the class HwRemDecayer depends on other classes (base classes
* excepted). In this case the listed libraries will be dynamically
* linked in the order they are specified.
*/
static string library() { return "HwShower.so"; }
};
/** @endcond */
}
#endif /* HERWIG_HwRemDecayer_H */
diff --git a/src/LHC-MB-Soft.in b/src/LHC-MB-Soft.in
--- a/src/LHC-MB-Soft.in
+++ b/src/LHC-MB-Soft.in
@@ -1,91 +1,91 @@
# -*- ThePEG-repository -*-
################################################################################
# This file contains our best tune to UE data from ATLAS at 7 TeV. More recent
# tunes and tunes for other centre-of-mass energies as well as more usage
# instructions can be obtained from this Herwig++ wiki page:
# http://projects.hepforge.org/herwig/trac/wiki/MB_UE_tunes
# The model for soft interactions and diffractions is explained in
# [S. Gieseke, P. Kirchgaesser, F. Loshaj, arXiv:1612.04701]
################################################################################
read snippets/PPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
##################################################
# LHC physics parameters (override defaults here)
##################################################
set EventGenerator:EventHandler:LuminosityFunction:Energy 7000.0
# Intrinsic pT tune extrapolated to LHC energy
set /Herwig/Shower/ShowerHandler:IntrinsicPtGaussian 2.2*GeV
-# MPI model
-read snippets/MPI.in
+# Minimum Bias
+read snippets/MB.in
# Diffraction model
read snippets/Diffraction.in
# Analyses
cd /Herwig/Analysis
create ThePEG::RivetAnalysis RivetAnalysis RivetAnalysis.so
cd /Herwig/Generators
insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/RivetAnalysis
# ATLAS
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1084540
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8591806
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8894728
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_S8994773
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2010_S8918562
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2011_I894867
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1124167
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2014_I1298811
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2012_I1091481
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2016_I1426695
# ATLAS 13 TeV
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2016_I1467230
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ATLAS_2016_I1419652
# CMS
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2015_I1356998
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2010_S8656010
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8884919
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2011_S8978280
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2012_I1193338
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 CMS_2013_I1218372
# Alice
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8624100
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8625980
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2010_S8706239
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2011_S8909580
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2011_S8945144
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2012_I1181770
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 ALICE_2014_I1300380
# LHCb
insert /Herwig/Analysis/RivetAnalysis:Analyses 0 LHCB_2014_I1281685
set /Herwig/Analysis/Plot:EventNumber 54
cd /Herwig/Generators
insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/Plot
#insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/HepMCFile
#set /Herwig/Analysis/HepMCFile:PrintEvent 1000000
#set /Herwig/Analysis/HepMCFile:Format GenEvent
#set /Herwig/Analysis/HepMCFile:Units GeV_mm
#set /Herwig/Analysis/HepMCFile:Filename events.fifo
##################################################
# Save run for later usage with 'Herwig++ run'
##################################################
saverun LHC-MB-Soft EventGenerator
diff --git a/src/defaults/Diffraction.in b/src/defaults/Diffraction.in
deleted file mode 100644
--- a/src/defaults/Diffraction.in
+++ /dev/null
@@ -1,104 +0,0 @@
-##################################################
-# Create separate SubProcessHandler for Diffraction
-##################################################
-
-cd /Herwig/MatrixElements
-create Herwig::MEDiffraction MEDiffractionLeft
-set MEDiffractionLeft:DiffDirection Left
-create Herwig::MEDiffraction MEDiffractionRight
-set MEDiffractionRight:DiffDirection Right
-create Herwig::MEDiffraction MEDiffractionDouble
-set MEDiffractionDouble:DiffDirection Both
-
-create Herwig::MEDiffraction MEDiffractionDeltaLeft
-set MEDiffractionDouble:DiffDirection Left
-create Herwig::MEDiffraction MEDiffractionDeltaRight
-set MEDiffractionDouble:DiffDirection Right
-create Herwig::MEDiffraction MEDiffractionDeltaDouble
-set MEDiffractionDouble:DiffDirection Both
-
-# Make a parton extractor for diffraction
-cd /Herwig/Partons
-cp PPExtractor DiffPPExtractor
-set DiffPPExtractor:FirstPDF /Herwig/Partons/NoPDF
-set DiffPPExtractor:SecondPDF /Herwig/Partons/NoPDF
-
-cd /Herwig/MatrixElements/
-# Create Diffraction SubProcessHandler
-cp SubProcess QCDDiffraction
-
-# Assign the PartonExtractor to the SubProcessHandler
-set QCDDiffraction:PartonExtractor /Herwig/Partons/DiffPPExtractor
-
-# Use only Delta as final excited state (Yes/No)
-set MEDiffractionLeft:DeltaOnly No
-set MEDiffractionRight:DeltaOnly No
-set MEDiffractionDouble:DeltaOnly No
-
-set MEDiffractionDeltaLeft:DeltaOnly Yes
-set MEDiffractionDeltaRight:DeltaOnly Yes
-set MEDiffractionDeltaDouble:DeltaOnly Yes
-
-
-# Set weight for Diffraction
-set MEDiffractionLeft:DiffractionAmplitude 12
-set MEDiffractionRight:DiffractionAmplitude 12
-set MEDiffractionDouble:DiffractionAmplitude 8
-
-set MEDiffractionDeltaLeft:DiffractionAmplitude 4
-set MEDiffractionDeltaRight:DiffractionAmplitude 4
-set MEDiffractionDeltaDouble:DiffractionAmplitude 2
-
-# Set soft diffraction paramters
-# Parameter values from arxiv/0709.0395
-set MEDiffractionLeft:ProtonPomeronSlope 10.1
-set MEDiffractionLeft:SoftPomeronIntercept 1.08
-set MEDiffractionLeft:SoftPomeronSlope 0.25
-
-set MEDiffractionRight:ProtonPomeronSlope 10.1
-set MEDiffractionRight:SoftPomeronIntercept 1.08
-set MEDiffractionRight:SoftPomeronSlope 0.25
-
-set MEDiffractionDouble:ProtonPomeronSlope 10.1
-set MEDiffractionDouble:SoftPomeronIntercept 1.08
-set MEDiffractionDouble:SoftPomeronSlope 0.25
-
-set MEDiffractionDeltaLeft:ProtonPomeronSlope 10.1
-set MEDiffractionDeltaLeft:SoftPomeronIntercept 1.08
-set MEDiffractionDeltaLeft:SoftPomeronSlope 0.25
-
-set MEDiffractionDeltaRight:ProtonPomeronSlope 10.1
-set MEDiffractionDeltaRight:SoftPomeronIntercept 1.08
-set MEDiffractionDeltaRight:SoftPomeronSlope 0.25
-
-set MEDiffractionDeltaDouble:ProtonPomeronSlope 10.1
-set MEDiffractionDeltaDouble:SoftPomeronIntercept 1.08
-set MEDiffractionDeltaDouble:SoftPomeronSlope 0.25
-
-# Set number of clusters for dissociation
-set MEDiffractionLeft:DissociationDecay One
-set MEDiffractionRight:DissociationDecay One
-set MEDiffractionDouble:DissociationDecay One
-
-set MEDiffractionDeltaLeft:DissociationDecay One
-set MEDiffractionDeltaRight:DissociationDecay One
-set MEDiffractionDeltaDouble:DissociationDecay One
-
-# Insert matrix elements
-insert QCDDiffraction:MatrixElements[0] MEDiffractionLeft
-insert QCDDiffraction:MatrixElements[0] MEDiffractionRight
-insert QCDDiffraction:MatrixElements[0] MEDiffractionDouble
-
-insert QCDDiffraction:MatrixElements[0] MEDiffractionDeltaLeft
-insert QCDDiffraction:MatrixElements[0] MEDiffractionDeltaRight
-insert QCDDiffraction:MatrixElements[0] MEDiffractionDeltaDouble
-# No cluster fission
-#set /Herwig/Hadronization/ClusterFissioner:ClMaxLight 3500
-
-set QCDDiffraction:CascadeHandler NULL
-set /Herwig/Generators/EventGenerator:EventHandler:CascadeHandler NULL
-
-insert /Herwig/Generators/EventGenerator:EventHandler:SubProcessHandlers[0] QCDDiffraction
-##########################################################################
-##########################################################################
-
diff --git a/src/defaults/MPI.in b/src/defaults/MPI.in
deleted file mode 100644
--- a/src/defaults/MPI.in
+++ /dev/null
@@ -1,57 +0,0 @@
-##################################################
-# MEMinBias Matrix Element
-##################################################
-# MPI model settings
-set /Herwig/UnderlyingEvent/MPIHandler:IdenticalToUE 0
-
-## Report the correct cross section
-cd /Herwig/Generators
-create Herwig::MPIXSecReweighter MPIXSecReweighter
-insert EventGenerator:EventHandler:PostSubProcessHandlers 0 MPIXSecReweighter
-set EventGenerator:EventHandler:CascadeHandler NULL
-
-clear EventGenerator:EventHandler:SubProcessHandlers[0]
-
-##################################################
-# Create separate SubProcessHandler for MinBias
-##################################################
-cd /Herwig/MatrixElements/
-cp SubProcess QCDMinBias
-
-set QCDMinBias:CascadeHandler /Herwig/Shower/ShowerHandler
-set QCDMinBias:CascadeHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler
-set QCDMinBias:DecayHandler /Herwig/Decays/DecayHandler
-
-insert QCDMinBias:MatrixElements[0] MEMinBias
-
-cd /Herwig/Generators
-# MinBias parameters used for the new kinematics of soft MPI
-set /Herwig/Cuts/MinBiasCuts:X1Min 0.11
-set /Herwig/Cuts/MinBiasCuts:X2Min 0.11
-
-# Needed to get the correct fraction of diffractive events
-set /Herwig/MatrixElements/MEMinBias:csNorm 4.5584
-
-set EventGenerator:EventHandler:Cuts /Herwig/Cuts/MinBiasCuts
-
-set /Herwig/Partons/RemnantDecayer:colourDisrupt 0.0
-set /Herwig/Hadronization/ColourReconnector:ColourReconnection Yes
-# Use multiperipheral kinematics
-set /Herwig/Partons/RemnantDecayer:MultiPeriph Yes
-# Set ladder multiplicity factor
-set /Herwig/Partons/RemnantDecayer:ladderbFactor 0.0
-# Set gaussian width of longitudinal momentum fraction
-# flucutuation
-set /Herwig/Partons/RemnantDecayer:gaussWidth 0.03
-
-# Tuned to min-bias data
-set /Herwig/Hadronization/ColourReconnector:ReconnectionProbability 0.677921
-set /Herwig/UnderlyingEvent/MPIHandler:pTmin0 3.068890
-set /Herwig/UnderlyingEvent/MPIHandler:InvRadius 1.386754
-set /Herwig/UnderlyingEvent/MPIHandler:Power 0.709107
-set /Herwig/Partons/RemnantDecayer:ladderPower -0.367906
-set /Herwig/Partons/RemnantDecayer:ladderNorm 1.022621
-
-
-cd /Herwig/MatrixElements/
-insert /Herwig/Generators/EventGenerator:EventHandler:SubProcessHandlers[0] QCDMinBias
diff --git a/src/snippets/Makefile.am b/src/snippets/Makefile.am
--- a/src/snippets/Makefile.am
+++ b/src/snippets/Makefile.am
@@ -1,27 +1,28 @@
BUILT_SOURCES = done-all-links
snippetsdir = ${pkgdatadir}/snippets
INPUTFILES = \
DipoleShowerFiveFlavours.in \
DipoleShowerFourFlavours.in \
Particles-SetLonglivedParticlesStable.in \
PDF-CT10.in \
PDF-NNPDF30NLO.in \
Matchbox.in \
MonacoSampler.in \
DipoleMerging.in \
EECollider.in EPCollider.in PPCollider.in \
-MPI.in \
+MB.in \
+SoftModel.in \
Diffraction.in
dist_snippets_DATA = $(INPUTFILES)
CLEANFILES = done-all-links
done-all-links: $(INPUTFILES)
@echo "Linking input files"
@for i in $(INPUTFILES); do \
if test -f $(srcdir)/$$i -a ! -e $$i; then \
$(LN_S) -f $(srcdir)/$$i; fi; done
@touch done-all-links
diff --git a/src/snippets/SoftModel.in b/src/snippets/SoftModel.in
new file mode 100644
--- /dev/null
+++ b/src/snippets/SoftModel.in
@@ -0,0 +1,17 @@
+# Parameetrs for soft interactions
+
+set /Herwig/Partons/RemnantDecayer:colourDisrupt 0.0
+set /Herwig/Hadronization/ColourReconnector:ColourReconnection Yes
+# Use multiperipheral kinematics
+set /Herwig/Partons/RemnantDecayer:MultiPeriph Yes
+# Set gaussian width of longitudinal momentum fraction
+# Flucutuation
+set /Herwig/Partons/RemnantDecayer:gaussWidth 0.03
+
+# Tuned to min-bias data
+set /Herwig/Hadronization/ColourReconnector:ReconnectionProbability 0.677921
+set /Herwig/UnderlyingEvent/MPIHandler:pTmin0 3.068890
+set /Herwig/UnderlyingEvent/MPIHandler:InvRadius 1.386754
+set /Herwig/UnderlyingEvent/MPIHandler:Power 0.709107
+set /Herwig/Partons/RemnantDecayer:ladderPower -0.367906
+set /Herwig/Partons/RemnantDecayer:ladderNorm 1.022621
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Dec 21, 2:02 PM (12 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4023054
Default Alt Text
(32 KB)
Attached To
rHERWIGHG herwighg
Event Timeline
Log In to Comment