Page MenuHomeHEPForge

No OneTemporary

This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -1,25 +1,26 @@
168ae2110e964d62fbc1331a1c2e095952a67748 release-2-5-2
3abb4fa42e20e332796c2572334c2d77204cd0e0 release-2-4-2
4796ca080aafd5daa3b7349b015cb1df944428a2 release-2-5-0
76da042f056eb153981b4d005d5474ffb90a5e88 release-2-4-1
81a684a558413c69df314365eabf09893ffd43d8 release-2-6-0
bd75cd00d99f4bdbaed992daf98f0a73c0f91e9b release-2-4-0
ff6ecc8d49ce10299303b050394bd5cb5837f1c3 release-2-5-1
d0389f5453b2c210923e1adc7b872b18269de668 release-2-6-1
f8998033021185942533b824607285feb3fbd2dc release-2-6-1a
cead23e428b9aacaf2d709e722624e54f844498b release-2-6-1b
191db4655439045f912cb21bd905e729d59ec7bc release-2-6-2
edb538156e9c3d64bb842934b4cebf0126aeb9ea release-2-6-3
eb4a104591859ecac18746b1ad54d6aa0c2a5d1a release-2-7-0
568971ac5b3c1d044c9259f2280a8304fc5a62e9 trunk-before-QED
6e3edb6cfeb4ee48687eb4eb3d016026fc59d602 trunk-after-QED
633abb80b571aa23088957df60e9b0000bbb8a22 release-2-7-1
1bdde095d2346c15ee548e5406a96f0fc6d6e0f1 beforeHQ
a0f9fb821396092bdbeee532bcb0bd624f58335b before_MB_merge
270c1e6b34aa7f758f1d9868c4d3e1ec4bf4e709 herwig-7-0-0
6e0f198c1c2603ecd1a0b6cfe40105cda4bd58c5 herwig-7-0-1
566c1de845a8070559cda45b1bdb40afa18cb2cc herwig-7-0-2
f5c4aa956880f2def763ebd57de7b5bfa55cb1db herwig-7-0-3
65282dedfc2e4bec184e68678dbf4c553c968f38 herwig-7-0-4
541e7790b65ed423c86780bf66ec30e6b99b5a18 herwig-7-1-0
dd35a1c12d57c047169e8c5fb18644972d49c6ac herwig-7-1-1
+0d651b079756b63713e32a1341d81e4dfc7eeb7b herwig-7-1-2
diff --git a/AUTHORS b/AUTHORS
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,56 +1,56 @@
================================================================================
-Herwig 7.1.1
+Herwig 7.1.2
================================================================================
Please contact <herwig@projects.hepforge.org> for any queries.
--------------------------------------------------------------------------------
Herwig is actively developed by:
--------------------------------------------------------------------------------
Johannes Bellm
Stefan Gieseke
David Grellscheid
Patrick Kirchgaeßer
Frashër Loshaj
Graeme Nail
Andreas Papaefstathiou
Simon Plätzer
Radek Podskubka
Michael Rauch
Christian Reuschle
Peter Richardson
Peter Schichtel
Mike Seymour
Andrzej Siödmok
Stephen Webster
--------------------------------------------------------------------------------
Former authors are:
--------------------------------------------------------------------------------
Ken Arnold
Manuel Bähr
Luca d'Errico
Martyn Gigg
Nadine Fischer
Keith Hamilton
Marco A. Harrendorf
Seyi Latunde-Dada
Daniel Rauch
Alberto Ribon
Christian Röhr
Pavel Růžička
Alex Schofield
Thomas Schuh
Alexander Sherstnev
Philip Stephens
Martin Stoll
Louise Suter
Jon Tully
Bryan Webber
Alix Wilcock
David Winn
Benedikt Zimmermann
diff --git a/MatrixElement/Matchbox/Base/MatchboxAmplitude.cc b/MatrixElement/Matchbox/Base/MatchboxAmplitude.cc
--- a/MatrixElement/Matchbox/Base/MatchboxAmplitude.cc
+++ b/MatrixElement/Matchbox/Base/MatchboxAmplitude.cc
@@ -1,954 +1,959 @@
// -*- C++ -*-
//
// MatchboxAmplitude.h is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the MatchboxAmplitude class.
//
#include "MatchboxAmplitude.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Interface/Reference.h"
#include "ThePEG/Interface/Parameter.h"
#include "ThePEG/Interface/Command.h"
#include "ThePEG/Interface/Switch.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/StandardModel/StandardModelBase.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "Herwig/MatrixElement/Matchbox/Utility/SpinorHelicity.h"
#include "Herwig/MatrixElement/Matchbox/Utility/SU2Helper.h"
#include "Herwig/MatrixElement/Matchbox/MatchboxFactory.h"
#include "ThePEG/Utilities/StringUtils.h"
#include "MatchboxMEBase.h"
#include <boost/numeric/ublas/io.hpp>
#include <boost/numeric/ublas/matrix_proxy.hpp>
#include <iterator>
using std::ostream_iterator;
using namespace Herwig;
MatchboxAmplitude::MatchboxAmplitude()
: Amplitude(), theCleanupAfter(20),
treeLevelHelicityPoints(0),
oneLoopHelicityPoints(0),
theTrivialColourLegs(false) {
}
MatchboxAmplitude::~MatchboxAmplitude() {}
void MatchboxAmplitude::persistentOutput(PersistentOStream & os) const {
os << theLastXComb << theColourBasis
<< theCleanupAfter << treeLevelHelicityPoints << oneLoopHelicityPoints
<< theTrivialColourLegs << theReshuffleMasses.size();
if ( !theReshuffleMasses.empty() ) {
for (auto const & r : theReshuffleMasses )
os << r.first << ounit(r.second,GeV);
}
}
void MatchboxAmplitude::persistentInput(PersistentIStream & is, int) {
size_t reshuffleSize;
is >> theLastXComb >> theColourBasis
>> theCleanupAfter >> treeLevelHelicityPoints >> oneLoopHelicityPoints
>> theTrivialColourLegs >> reshuffleSize;
theReshuffleMasses.clear();
while ( reshuffleSize > 0 ) {
long id; Energy m;
is >> id >> iunit(m,GeV);
theReshuffleMasses[id] = m;
--reshuffleSize;
}
lastMatchboxXComb(theLastXComb);
}
Ptr<MatchboxFactory>::tptr MatchboxAmplitude::factory() const {
return MatchboxFactory::currentFactory();
}
void MatchboxAmplitude::doinit() {
Amplitude::doinit();
if ( colourBasis() ) {
colourBasis()->init();
}
}
void MatchboxAmplitude::doinitrun() {
Amplitude::doinitrun();
if ( colourBasis())
colourBasis()->initrun();
}
void MatchboxAmplitude::cloneDependencies(const std::string&,bool) {}
MatchboxMEBasePtr MatchboxAmplitude::makeME(const PDVector&) const {
return new_ptr(MatchboxMEBase());
}
Selector<const ColourLines *> MatchboxAmplitude::colourGeometries(tcDiagPtr d) const {
if ( haveColourFlows() )
return colourBasis()->colourGeometries(d,lastLargeNAmplitudes());
return Selector<const ColourLines *>();
}
void MatchboxAmplitude::olpOrderFileHeader(ostream& os) const {
os << "# OLP order file created by Herwig/Matchbox\n\n";
os << "InterfaceVersion BLHA2\n\n";
os << "Model SM\n"
<< "CorrectionType QCD\n"
<< "IRregularisation " << (isDR() ? "DRED" : "CDR") << "\n"
<< "Extra HelAvgInitial no\n"
<< "Extra ColAvgInitial no\n"
<< "Extra MCSymmetrizeFinal no\n";
os << "\n";
}
void MatchboxAmplitude::olpOrderFileProcesses(ostream& os,
const map<pair<Process,int>,int>& proc) const {
map<int,pair<Process,int> > sorted;
for (auto const & p : proc ) {
sorted[p.second] = p.first;
}
unsigned int currentOrderInAlphaS = sorted.begin()->second.first.orderInAlphaS;
unsigned int currentOrderInAlphaEW = sorted.begin()->second.first.orderInAlphaEW;
int currentType = sorted.begin()->second.second;
os << "AlphasPower " << currentOrderInAlphaS << "\n"
<< "AlphaPower " << currentOrderInAlphaEW << "\n"
<< "AmplitudeType ";
if ( currentType == ProcessType::treeME2 ) {
os << "tree\n";
} else if ( currentType == ProcessType::oneLoopInterference ) {
os << "loop\n";
} else if ( currentType == ProcessType::colourCorrelatedME2 ) {
os << "cctree\n";
} else if ( currentType == ProcessType::spinColourCorrelatedME2 ) {
os << "sctree\n";
} else if ( currentType == ProcessType::loopInducedME2 ) {
os << "loopinduced\n";
} else if ( currentType == ProcessType::spinCorrelatedME2 ) {
os << "stree\n";
} else assert(false);
for ( map<int,pair<Process,int> >::const_iterator p = sorted.begin();
p != sorted.end(); ++p ) {
if ( currentOrderInAlphaS != p->second.first.orderInAlphaS ) {
currentOrderInAlphaS = p->second.first.orderInAlphaS;
os << "AlphasPower " << currentOrderInAlphaS << "\n";
}
if ( currentOrderInAlphaEW != p->second.first.orderInAlphaEW ) {
currentOrderInAlphaEW = p->second.first.orderInAlphaEW;
os << "AlphaPower " << currentOrderInAlphaEW << "\n";
}
if ( currentType != p->second.second ) {
currentType = p->second.second;
os << "AmplitudeType ";
if ( currentType == ProcessType::treeME2 ) {
os << "tree\n";
} else if ( currentType == ProcessType::oneLoopInterference ) {
os << "loop\n";
} else if ( currentType == ProcessType::colourCorrelatedME2 ) {
os << "cctree\n";
} else if ( currentType == ProcessType::spinColourCorrelatedME2 ) {
os << "sctree\n";
} else if ( currentType == ProcessType::spinCorrelatedME2 ) {
os << "stree\n";
} else assert(false);
}
os << p->second.first.legs[0]->id() << " "
<< p->second.first.legs[1]->id() << " -> ";
for ( PDVector::const_iterator o = p->second.first.legs.begin() + 2;
o != p->second.first.legs.end(); ++o ) {
os << (**o).id() << " ";
}
os << "\n";
}
}
bool MatchboxAmplitude::startOLP(const map<pair<Process,int>,int>& procs) {
string orderFileName = factory()->buildStorage() + name() + ".OLPOrder.lh";
ofstream orderFile(orderFileName.c_str());
olpOrderFileHeader(orderFile);
olpOrderFileProcesses(orderFile,procs);
string contractFileName = factory()->buildStorage() + name() + ".OLPContract.lh";
signOLP(orderFileName, contractFileName);
// TODO check the contract file
int status = 0;
startOLP(contractFileName, status);
if ( status != 1 )
return false;
return true;
}
struct orderPartonData {
bool operator()(const pair<tcPDPtr,int>& a,
const pair<tcPDPtr,int>& b) const {
if ( a.first == b.first )
return a.second < b.second;
int acolour = a.first->iColour();
int bcolour = b.first->iColour();
if ( abs(acolour) != abs(bcolour) )
return abs(acolour) < abs(bcolour);
if ( a.first->iSpin() != b.first->iSpin() )
return a.first->iSpin() < b.first->iSpin();
int acharge = a.first->iCharge();
int bcharge = b.first->iCharge();
if ( abs(acharge) != abs(bcharge) )
return abs(acharge) < abs(bcharge);
if ( abs(a.first->id()) != abs(b.first->id()) )
return abs(a.first->id()) < abs(b.first->id());
return a.first->id() > b.first->id();
}
};
void MatchboxAmplitude::setXComb(tStdXCombPtr xc) {
theLastXComb = xc;
lastMatchboxXComb(xc);
fillCrossingMap();
if ( ( treeAmplitudes() || oneLoopAmplitudes() ) &&
hasAmplitudeMomenta() )
for ( size_t k = 0 ; k < meMomenta().size(); ++k )
amplitudeMomenta()[k] = amplitudeMomentum(k);
}
void MatchboxAmplitude::fillCrossingMap(size_t shift) {
if ( !amplitudePartonData().empty() )
return;
double csign = 1.;
set<pair<tcPDPtr,int>,orderPartonData > processLegs;
for ( unsigned int l = 0; l < mePartonData().size(); ++l ) {
if ( l > 1 )
processLegs.insert(make_pair(mePartonData()[l],l));
else {
if ( mePartonData()[l]->CC() ) {
processLegs.insert(make_pair(mePartonData()[l]->CC(),l));
if ( mePartonData()[l]->iSpin() == PDT::Spin1Half )
csign *= -1.;
} else {
processLegs.insert(make_pair(mePartonData()[l],l));
}
}
}
crossingSign(csign);
set<pair<tcPDPtr,int> > amplitudeLegs;
crossingMap().resize(mePartonData().size());
amplitudePartonData().resize(mePartonData().size());
if ( hasAmplitudeMomenta() )
amplitudeMomenta().resize(mePartonData().size());
int ampCount = 0;
// process legs are already sorted, we only need to arrange for
// adjacent particles and anti-particles
while ( !processLegs.empty() ) {
set<pair<tcPDPtr,int>,orderPartonData >::iterator next
= processLegs.begin();
while ( next->first->id() < 0 ) {
if ( ++next == processLegs.end() )
break;
}
//This happens for e.g. p p-> W- gamma & p p->W- W- j j
//Still working for pp->W-H-W- e+ nue jj ???
if(next == processLegs.end()){
next = processLegs.begin();
for (;next!=processLegs.end();next++){
assert(next->first->id() < 0 );
crossingMap()[ampCount] = next->second - shift;
amplitudeLegs.insert(make_pair(next->first,ampCount));
++ampCount;
processLegs.erase(next);
}
break;
}
crossingMap()[ampCount] = next->second - shift;
amplitudeLegs.insert(make_pair(next->first,ampCount));
tcPDPtr check = next->first;
processLegs.erase(next);
++ampCount;
if ( check->CC() ) {
set<pair<tcPDPtr,int>,orderPartonData>::iterator checkcc
= processLegs.end();
for ( set<pair<tcPDPtr,int>,orderPartonData>::iterator c = processLegs.begin();
c != processLegs.end(); ++c ) {
if ( c->first == check->CC() ) {
checkcc = c; break;
}
}
if ( checkcc == processLegs.end() )
for ( set<pair<tcPDPtr,int>,orderPartonData>::iterator c = processLegs.begin();
c != processLegs.end(); ++c ) {
if ( !SU2Helper::SU2CC(check) )
continue;
if ( c->first == SU2Helper::SU2CC(check)->CC() ) {
checkcc = c; break;
}
}
if ( checkcc == processLegs.end() ) {
int f = SU2Helper::family(check);
for ( int i = 1 - f; i < 5 - f; i++ ) {
bool gotone = false;
for ( set<pair<tcPDPtr,int>,orderPartonData>::iterator c = processLegs.begin();
c != processLegs.end(); ++c ) {
if ( !SU2Helper::SU2CC(check,i) )
continue;
if ( c->first == SU2Helper::SU2CC(check,i)->CC() ) {
checkcc = c; gotone = true; break;
}
}
if ( gotone )
break;
}
}
// default to just pick the next available anti-particle
if ( processLegs.empty() ) break;
if ( checkcc == processLegs.end() ) {
checkcc = processLegs.begin();
while ( checkcc->first->id() > 0 )
if ( ++checkcc == processLegs.end() )
break;
}
// if still not there, use whatever is available at the end
if ( checkcc == processLegs.end() )
checkcc = processLegs.begin();
crossingMap()[ampCount] = checkcc->second - shift;
amplitudeLegs.insert(make_pair(checkcc->first,ampCount));
processLegs.erase(checkcc);
++ampCount;
}
}
for ( set<pair<tcPDPtr,int> >::const_iterator l = amplitudeLegs.begin();
l != amplitudeLegs.end(); ++l )
amplitudePartonData()[l->second] = l->first;
if ( colourBasis() && !colourBasis()->indexMap().empty()) {
assert(colourBasis()->indexMap().find(mePartonData()) !=
colourBasis()->indexMap().end());
const map<size_t,size_t> colourCross =
colourBasis()->indexMap().find(mePartonData())->second;
for ( size_t k = 0; k < crossingMap().size(); ++k ) {
if ( colourCross.find(crossingMap()[k]) !=
colourCross.end() ) {
size_t ccross = colourCross.find(crossingMap()[k])->second;
amplitudeToColourMap()[k] = ccross;
colourToAmplitudeMap()[ccross] = k;
}
}
}
}
const string& MatchboxAmplitude::colourOrderingString(size_t id) const {
static string empty = "";
if ( !colourBasis() ) {
return empty;
}
return colourBasis()->orderingString(mePartonData(),colourToAmplitudeMap(),id);
}
const set<vector<size_t> >& MatchboxAmplitude::colourOrdering(size_t id) const {
static set<vector<size_t> > empty;
if ( !colourBasis() ) {
return empty;
}
return colourBasis()->ordering(mePartonData(),colourToAmplitudeMap(),id);
}
Lorentz5Momentum MatchboxAmplitude::amplitudeMomentum(int i) const {
int iCrossed = crossingMap()[i];
Lorentz5Momentum res = meMomenta()[iCrossed];
if ( iCrossed < 2 )
res = -res;
res.setMass(meMomenta()[iCrossed].mass());
Energy2 rho = res.t()*res.t() - res.mass2();
res.setRho(sqrt(abs(rho)));
return res;
}
set<vector<int> > MatchboxAmplitude::generateHelicities() const {
set<vector<int> > res;
vector<int> current(amplitudePartonData().size());
doGenerateHelicities(res,current,0);
return res;
}
void MatchboxAmplitude::doGenerateHelicities(set<vector<int> >& res,
vector<int>& current,
size_t pos) const {
if ( pos == amplitudePartonData().size() ) {
res.insert(current);
return;
}
if ( amplitudePartonData()[pos]->iSpin() == PDT::Spin0 ) {
current[pos] = 0;
doGenerateHelicities(res,current,pos+1);
} else if ( amplitudePartonData()[pos]->iSpin() == PDT::Spin1Half ) {
current[pos] = 1;
doGenerateHelicities(res,current,pos+1);
current[pos] = -1;
doGenerateHelicities(res,current,pos+1);
}else if (amplitudePartonData()[pos]->iSpin() == PDT::Spin1 ) {
if (amplitudePartonData()[pos]->hardProcessMass() != ZERO){
current[pos] = 0;
doGenerateHelicities(res,current,pos+1);
}
current[pos] = 1;
doGenerateHelicities(res,current,pos+1);
current[pos] = -1;
doGenerateHelicities(res,current,pos+1);
}
}
vector<unsigned int> MatchboxAmplitude::physicalHelicities(const vector<int>&) const {
throw Exception()
<< "MatchboxAmplitude::physicalHelicities(): The amplitude '" << name() << "' does not support the spin correlation algorithm"
<< Exception::runerror;
static vector<unsigned int> dummy;
return dummy;
}
void MatchboxAmplitude::prepareAmplitudes(Ptr<MatchboxMEBase>::tcptr) {
if ( !calculateTreeAmplitudes() )
return;
bool initialized =
!lastAmplitudes().empty() && treeLevelHelicityPoints > theCleanupAfter;
if ( !initialized ) {
treeLevelHelicityPoints++;
map<vector<int>,CVector> all;
map<vector<int>,CVector> allLargeN;
set<vector<int> > helicities = generateHelicities();
for ( set<vector<int> >::const_iterator h = helicities.begin();
h != helicities.end(); ++h ) {
all.insert(make_pair(*h,CVector(max(colourBasisDim(),1))));
allLargeN.insert(make_pair(*h,CVector(max(colourBasisDim(),1))));
}
AmplitudeIterator amp = all.begin();
AmplitudeIterator lamp = allLargeN.begin();
for ( ; amp != all.end(); ++amp, ++lamp ) {
for ( size_t k = 0; k < max(colourBasisDim(),1); ++k ){
amp->second(k) = evaluate(k,amp->first,lamp->second(k));
if ( amp->second(k) != Complex(0.0) ) {
if ( lastAmplitudes().find(amp->first)!=lastAmplitudes().end() ) {
lastAmplitudes().find(amp->first)->second = amp->second;
lastLargeNAmplitudes().find(lamp->first)->second = lamp->second;
} else {
lastAmplitudes().insert(*amp);
lastLargeNAmplitudes().insert(*lamp);
}
} else if ( lastAmplitudes().find(amp->first)!=lastAmplitudes().end() ){
lastAmplitudes().find(amp->first)->second = amp->second;
lastLargeNAmplitudes().find(lamp->first)->second = lamp->second;
}
}
}
} else {
AmplitudeIterator amp = lastAmplitudes().begin();
AmplitudeIterator lamp = lastLargeNAmplitudes().begin();
for ( ;amp != lastAmplitudes().end(); ++amp, ++lamp ) {
for ( size_t k = 0; k < max(colourBasisDim(),1); ++k ){
amp->second(k) = evaluate(k,amp->first,lamp->second(k));
}
}
}
haveTreeAmplitudes();
}
void MatchboxAmplitude::prepareOneLoopAmplitudes(Ptr<MatchboxMEBase>::tcptr) {
if ( !calculateOneLoopAmplitudes() )
return;
bool initialized =
!lastOneLoopAmplitudes().empty() && oneLoopHelicityPoints > theCleanupAfter;
if ( !initialized ) {
oneLoopHelicityPoints++;
map<vector<int>,CVector> all;
set<vector<int> > helicities = generateHelicities();
for ( set<vector<int> >::const_iterator h = helicities.begin();
h != helicities.end(); ++h ) {
all.insert(make_pair(*h,CVector(max(colourBasisDim(),1))));
}
AmplitudeIterator amp = all.begin();
for ( ; amp != all.end(); ++amp ) {
for ( size_t k = 0; k < max(colourBasisDim(),1); ++k ){
amp->second(k) = evaluateOneLoop(k,amp->first);
if ( amp->second(k) != Complex(0.0) ) {
if ( lastOneLoopAmplitudes().find(amp->first)!=lastOneLoopAmplitudes().end() ) {
lastOneLoopAmplitudes().find(amp->first)->second = amp->second;
} else{
lastOneLoopAmplitudes().insert(*amp);
}
} else if ( lastOneLoopAmplitudes().find(amp->first)!=lastOneLoopAmplitudes().end() ){
lastOneLoopAmplitudes().find(amp->first)->second = amp->second;
}
}
}
} else {
AmplitudeIterator amp = lastOneLoopAmplitudes().begin();
for ( ;amp != lastOneLoopAmplitudes().end(); ++amp ) {
for ( size_t k = 0; k < max(colourBasisDim(),1); ++k ){
amp->second(k) = evaluateOneLoop(k,amp->first);
}
}
}
haveOneLoopAmplitudes();
}
Complex MatchboxAmplitude::value(const tcPDVector&,
const vector<Lorentz5Momentum>&,
const vector<int>&) {
assert(false && "ThePEG::Amplitude interface is not sufficient at the moment.");
throw Exception() << "MatchboxAmplitude::value(): ThePEG::Amplitude interface is not sufficient at the moment."
<< Exception::runerror;
return 0.;
}
double MatchboxAmplitude::me2() const {
if ( !calculateTreeME2() )
return lastTreeME2();
lastTreeME2(colourBasis()->me2(mePartonData(),lastAmplitudes()));
return lastTreeME2();
}
double MatchboxAmplitude::largeNME2(Ptr<ColourBasis>::tptr largeNBasis) const {
if ( !calculateLargeNME2() )
return lastLargeNME2();
double res = 0.;
if ( !trivialColourLegs() )
res = largeNBasis->me2(mePartonData(),lastLargeNAmplitudes());
else
res = me2();
lastLargeNME2(res);
return res;
}
double MatchboxAmplitude::oneLoopInterference() const {
if ( !calculateOneLoopInterference() )
return lastOneLoopInterference();
lastOneLoopInterference(colourBasis()->interference(mePartonData(),
lastOneLoopAmplitudes(),lastAmplitudes()));
return lastOneLoopInterference();
}
double MatchboxAmplitude::colourCharge(tcPDPtr data) const {
double cfac = 1.;
double Nc = generator()->standardModel()->Nc();
if ( data->iColour() == PDT::Colour8 ) {
cfac = Nc;
} else if ( data->iColour() == PDT::Colour3 ||
data->iColour() == PDT::Colour3bar ) {
cfac = (sqr(Nc)-1.)/(2.*Nc);
} else assert(false);
return cfac;
}
double MatchboxAmplitude::largeNColourCharge(tcPDPtr data) const {
double cfac = 1.;
double Nc = generator()->standardModel()->Nc();
if ( data->iColour() == PDT::Colour8 ) {
cfac = Nc;
} else if ( data->iColour() == PDT::Colour3 ||
data->iColour() == PDT::Colour3bar ) {
cfac = 0.5*Nc;
} else assert(false);
return cfac;
}
double MatchboxAmplitude::colourCorrelatedME2(pair<int,int> ij) const {
double cfac = colourCharge(mePartonData()[ij.first]);
if ( !calculateColourCorrelator(ij) )
return lastColourCorrelator(ij)/cfac;
double res = 0.;
if ( !trivialColourLegs() )
res = colourBasis()->colourCorrelatedME2(ij,mePartonData(),lastAmplitudes());
else {
// two partons TiTj = (-Ti^2-Tj^2)/2
// three partons TiTj = (-Ti^2-Tj^2+Tk^2)/2
int n = mePartonData().size();
for ( int i = 0; i < n; ++i ) {
if ( !mePartonData()[i]->coloured() )
continue;
if ( i == ij.first || i == ij.second )
res -= colourCharge(mePartonData()[i])*me2();
else
res += colourCharge(mePartonData()[i])*me2();
}
res *= 0.5;
}
lastColourCorrelator(ij,res);
return res/cfac;
}
double MatchboxAmplitude::largeNColourCorrelatedME2(pair<int,int> ij,
Ptr<ColourBasis>::tptr largeNBasis) const {
double cfac = largeNColourCharge(mePartonData()[ij.first]);
if ( !calculateLargeNColourCorrelator(ij) )
return lastLargeNColourCorrelator(ij)/cfac;
double res = 0.;
if ( !trivialColourLegs() )
res = largeNBasis->colourCorrelatedME2(ij,mePartonData(),lastLargeNAmplitudes());
else {
// two partons TiTj = (-Ti^2-Tj^2)/2
// three partons TiTj = (-Ti^2-Tj^2+Tk^2)/2
int n = mePartonData().size();
for ( int i = 0; i < n; ++i ) {
if ( !mePartonData()[i]->coloured() )
continue;
if ( i == ij.first || i == ij.second )
res -= largeNColourCharge(mePartonData()[i])*largeNME2(largeNBasis);
else
res += largeNColourCharge(mePartonData()[i])*largeNME2(largeNBasis);
}
res *= 0.5;
}
lastLargeNColourCorrelator(ij,res);
return res/cfac;
}
// compare int vectors modulo certain element
// which needs to differe between the two
bool equalsModulo(unsigned int i, const vector<int>& a, const vector<int>& b) {
assert(a.size()==b.size());
if ( a[i] == b[i] )
return false;
for ( unsigned int k = 0; k < a.size(); ++k ) {
if ( k == i )
continue;
if ( a[k] != b[k] )
return false;
}
return true;
}
LorentzVector<Complex> MatchboxAmplitude::plusPolarization(const Lorentz5Momentum& p,
const Lorentz5Momentum& n,
int) const {
using namespace SpinorHelicity;
LorentzVector<complex<Energy> > num =
PlusSpinorCurrent(PlusConjugateSpinor(n),MinusSpinor(p)).eval();
complex<Energy> den =
sqrt(2.)*PlusSpinorProduct(PlusConjugateSpinor(n),PlusSpinor(p)).eval();
LorentzVector<Complex> polarization(num.x()/den,num.y()/den,num.z()/den,num.t()/den);
return polarization;
}
double MatchboxAmplitude::spinColourCorrelatedME2(pair<int,int> ij,
const SpinCorrelationTensor& c) const {
Lorentz5Momentum p = meMomenta()[ij.first];
Lorentz5Momentum n = meMomenta()[ij.second];
LorentzVector<Complex> polarization = plusPolarization(p,n,ij.first);
Complex pFactor = (polarization*c.momentum())/sqrt(abs(c.scale()));
double avg =
colourCorrelatedME2(ij)*(-c.diagonal()+ (c.scale() > ZERO ? 1. : -1.)*norm(pFactor));
int iCrossed = -1;
for ( unsigned int k = 0; k < crossingMap().size(); ++k )
if ( crossingMap()[k] == ij.first ) {
iCrossed = k;
break;
}
assert(iCrossed >= 0);
Complex csCorr = 0.0;
if ( calculateColourSpinCorrelator(ij) ) {
set<const CVector*> done;
for ( AmplitudeConstIterator a = lastAmplitudes().begin();
a != lastAmplitudes().end(); ++a ) {
if ( done.find(&(a->second)) != done.end() )
continue;
AmplitudeConstIterator b = lastAmplitudes().begin();
while ( !equalsModulo(iCrossed,a->first,b->first) )
if ( ++b == lastAmplitudes().end() )
break;
if ( b == lastAmplitudes().end() || done.find(&(b->second)) != done.end() )
continue;
done.insert(&(a->second)); done.insert(&(b->second));
if ( a->first[iCrossed] == 1 )
swap(a,b);
csCorr += colourBasis()->colourCorrelatedInterference(ij,mePartonData(),a->second,b->second);
}
lastColourSpinCorrelator(ij,csCorr);
} else {
csCorr = lastColourSpinCorrelator(ij);
}
double corr =
2.*real(csCorr*sqr(pFactor));
double Nc = generator()->standardModel()->Nc();
double cfac = 1.;
if ( mePartonData()[ij.first]->iColour() == PDT::Colour8 ) {
cfac = Nc;
} else if ( mePartonData()[ij.first]->iColour() == PDT::Colour3 ||
mePartonData()[ij.first]->iColour() == PDT::Colour3bar ) {
cfac = (sqr(Nc)-1.)/(2.*Nc);
} else assert(false);
return
avg + (c.scale() > ZERO ? 1. : -1.)*corr/cfac;
}
double MatchboxAmplitude::spinCorrelatedME2(pair<int,int> ij,
const SpinCorrelationTensor& c) const {
Lorentz5Momentum p = meMomenta()[ij.first];
Lorentz5Momentum n = meMomenta()[ij.second];
LorentzVector<Complex> polarization = plusPolarization(p,n,ij.first);
Complex pFactor = (polarization*c.momentum())/sqrt(abs(c.scale()));
double avg =
me2()*(-c.diagonal()+ (c.scale() > ZERO ? 1. : -1.)*norm(pFactor));
int iCrossed = -1;
for ( unsigned int k = 0; k < crossingMap().size(); ++k )
if ( crossingMap()[k] == ij.first ) {
iCrossed = k;
break;
}
assert(iCrossed >= 0);
Complex csCorr = 0.0;
if ( calculateSpinCorrelator(ij) ) {
set<const CVector*> done;
for ( AmplitudeConstIterator a = lastAmplitudes().begin();
a != lastAmplitudes().end(); ++a ) {
if ( done.find(&(a->second)) != done.end() )
continue;
AmplitudeConstIterator b = lastAmplitudes().begin();
while ( !equalsModulo(iCrossed,a->first,b->first) )
if ( ++b == lastAmplitudes().end() )
break;
if ( b == lastAmplitudes().end() || done.find(&(b->second)) != done.end() )
continue;
done.insert(&(a->second)); done.insert(&(b->second));
if ( a->first[iCrossed] == 1 )
swap(a,b);
csCorr += colourBasis()->interference(mePartonData(),a->second,b->second);
}
lastSpinCorrelator(ij,csCorr);
} else {
csCorr = lastSpinCorrelator(ij);
}
double corr =
2.*real(csCorr*sqr(pFactor));
return
avg + (c.scale() > ZERO ? 1. : -1.)*corr;
}
void MatchboxAmplitude::checkReshuffling(Ptr<MatchboxPhasespace>::tptr ps) {
set<long> noReshuffle;
for ( map<long,Energy>::const_iterator m = reshuffleMasses().begin();
m != reshuffleMasses().end(); ++m ) {
tcPDPtr data = getParticleData(m->first);
assert(data);
bool needReshuffle = m->second != data->hardProcessMass();
needReshuffle |=
(data->hardProcessWidth() != ZERO || data->massGenerator()) &&
ps->useMassGenerators();
if ( !needReshuffle )
noReshuffle.insert(m->first);
}
for ( set<long>::const_iterator rm = noReshuffle.begin();
rm != noReshuffle.end(); ++rm )
theReshuffleMasses.erase(*rm);
}
string MatchboxAmplitude::doReshuffle(string in) {
in = StringUtils::stripws(in);
if ( in.empty() )
throw Exception() << "MatchboxAmplitude::doReshuffle(): Expecting PDG id and mass value"
<< Exception::runerror;
istringstream ins(in);
long id;
ins >> id;
if ( ins.eof() )
throw Exception() << "MatchboxAmplitude::doReshuffle(): expecting PDG id and mass value"
<< Exception::runerror;
Energy m;
ins >> iunit(m,GeV);
theReshuffleMasses[id] = m;
return "";
}
string MatchboxAmplitude::doMassless(string in) {
in = StringUtils::stripws(in);
if ( in.empty() )
throw Exception() << "MatchboxAmplitude::doMassless(): Expecting PDG id"
<< Exception::runerror;
istringstream ins(in);
long id;
ins >> id;
theReshuffleMasses[id] = ZERO;
return "";
}
string MatchboxAmplitude::doOnShell(string in) {
in = StringUtils::stripws(in);
if ( in.empty() )
throw Exception() << "MatchboxAmplitude::doOnShell(): Expecting PDG id"
<< Exception::runerror;
istringstream ins(in);
long id;
ins >> id;
tcPDPtr data = getParticleData(id);
assert(data);
theReshuffleMasses[id] = data->hardProcessMass();
return "";
}
string MatchboxAmplitude::doClearReshuffling(string) {
theReshuffleMasses.clear();
return "";
}
void MatchboxAmplitude::Init() {
static ClassDocumentation<MatchboxAmplitude> documentation
("MatchboxAmplitude is the base class for amplitude "
"implementations inside Matchbox.");
static Reference<MatchboxAmplitude,ColourBasis> interfaceColourBasis
("ColourBasis",
"Set the colour basis implementation.",
&MatchboxAmplitude::theColourBasis, false, false, true, true, false);
static Parameter<MatchboxAmplitude,int> interfaceCleanupAfter
("CleanupAfter",
"The number of points after which helicity combinations are cleaned up.",
&MatchboxAmplitude::theCleanupAfter, 20, 1, 0,
false, false, Interface::lowerlim);
+ interfaceCleanupAfter.rank(-1);
static Command<MatchboxAmplitude> interfaceReshuffle
("Reshuffle",
"Reshuffle the mass for the given PDG id to a different mass shell for amplitude evaluation.",
&MatchboxAmplitude::doReshuffle, false);
+ interfaceReshuffle.rank(-1);
static Command<MatchboxAmplitude> interfaceMassless
("Massless",
"Reshuffle the mass for the given PDG id to be massless for amplitude evaluation.",
&MatchboxAmplitude::doMassless, false);
+ interfaceMassless.rank(-1);
static Command<MatchboxAmplitude> interfaceOnShell
("OnShell",
"Reshuffle the mass for the given PDG id to be the on-shell mass for amplitude evaluation.",
&MatchboxAmplitude::doOnShell, false);
+ interfaceOnShell.rank(-1);
static Command<MatchboxAmplitude> interfaceClearReshuffling
("ClearReshuffling",
"Do not perform any reshuffling.",
&MatchboxAmplitude::doClearReshuffling, false);
+ interfaceClearReshuffling.rank(-1);
static Switch<MatchboxAmplitude,bool> interfaceTrivialColourLegs
("TrivialColourLegs",
"Assume the process considered has trivial colour correllations.",
&MatchboxAmplitude::theTrivialColourLegs, false, false, false);
static SwitchOption interfaceTrivialColourLegsYes
(interfaceTrivialColourLegs,
"Yes",
"",
true);
static SwitchOption interfaceTrivialColourLegsNo
(interfaceTrivialColourLegs,
"No",
"",
false);
interfaceTrivialColourLegs.rank(-1);
}
// *** Attention *** The following static variable is needed for the type
// description system in ThePEG. Please check that the template arguments
// are correct (the class and its base class), and that the constructor
// arguments are correct (the class name and the name of the dynamically
// loadable library where the class implementation can be found).
DescribeAbstractClass<MatchboxAmplitude,Amplitude>
describeMatchboxAmplitude("Herwig::MatchboxAmplitude", "Herwig.so");
diff --git a/MatrixElement/Matchbox/External/MadGraph/MadGraphAmplitude.cc b/MatrixElement/Matchbox/External/MadGraph/MadGraphAmplitude.cc
--- a/MatrixElement/Matchbox/External/MadGraph/MadGraphAmplitude.cc
+++ b/MatrixElement/Matchbox/External/MadGraph/MadGraphAmplitude.cc
@@ -1,911 +1,948 @@
// -*- C++ -*-
//
// MadGraphAmplitude.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the MadGraphAmplitude class.
//
#include "MadGraphAmplitude.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "Herwig/MatrixElement/Matchbox/MatchboxFactory.h"
#include "ThePEG/Interface/Parameter.h"
#include "ThePEG/Interface/Switch.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/PDT/EnumParticles.h"
#include "Herwig/API/Filesystem.h"
#include "Herwig/API/RunDirectories.h"
#include <cstdlib>
#include <dlfcn.h>
#include <errno.h>
#include <sstream>
using namespace Herwig;
#ifndef HERWIG_BINDIR
#error Makefile.am needs to define HERWIG_BINDIR
#endif
#ifndef HERWIG_PKGDATADIR
#error Makefile.am needs to define HERWIG_PKGDATADIR
#endif
#ifndef MADGRAPH_PREFIX
#error Makefile.am needs to define MADGRAPH_PREFIX
#endif
extern "C" void mginitproc_(char *i,int);
extern "C" void MG_Calculate_wavefunctions_virt(int* proc,double*,double*);
extern "C" void MG_Calculate_wavefunctions_born(int* proc,double*, int*);
extern "C" void MG_Jamp (int* proc,int*, double*);
extern "C" void MG_LNJamp (int* proc,int*, double*);
extern "C" void MG_Virt (int* proc,double*);
extern "C" void MG_NCol (int* proc,int*);
extern "C" void MG_vxxxxx (double* p,double* n,int* inc,double* );
extern "C" void MG_Colour (int* proc,int* i,int* j ,int* color);
MadGraphAmplitude::MadGraphAmplitude()
: keepinputtopmass(false){ }
MadGraphAmplitude::~MadGraphAmplitude() {
}
string MadGraphAmplitude::theProcessPath="";
string MadGraphAmplitude::madgraphPrefix_=MADGRAPH_PREFIX;
string MadGraphAmplitude::theMGmodel="loop_sm";
string MadGraphAmplitude::bindir_=HERWIG_BINDIR;
string MadGraphAmplitude::includedir_=HERWIG_INCLUDEDIR;
string MadGraphAmplitude::pkgdatadir_=HERWIG_PKGDATADIR;
IBPtr MadGraphAmplitude::clone() const {
return new_ptr(*this);
}
IBPtr MadGraphAmplitude::fullclone() const {
return new_ptr(*this);
}
bool MadGraphAmplitude::initializedMad=false;
vector<string> MadGraphAmplitude::BornAmplitudes=vector<string>();
vector<string> MadGraphAmplitude::VirtAmplitudes=vector<string>();
void MadGraphAmplitude::initProcess(const cPDVector& ) {
if ( lastMatchboxXComb()->initialized() )
return;
if ( !DynamicLoader::load(mgProcLibPath()+"InterfaceMadGraph.so") )
throw Exception() << "MadGraphAmplitude: Failed to load MadGraph amplitudes\n"
<< DynamicLoader::lastErrorMessage
<< Exception::runerror;
if (!initializedMad){
string mstr=(factory()->runStorage()+"MadGraphAmplitudes"+"/param_card"+((theMGmodel=="loop_sm")?"":("_"+theMGmodel))+".dat");
if( theMGmodel[0]=='/')mstr="param_card.dat";
size_t len = mstr.size();
mginitproc_(const_cast<char*>(mstr.c_str()),len);
initializedMad=true;
}
lastMatchboxXComb()->isInitialized();
}
bool MadGraphAmplitude::writeAmplitudesDat(){
bool res=false;
string born= mgProcLibPath()+"BornAmplitudes.dat";
if ( !filesystem::exists(born) ) {
ofstream borns(born.c_str());
for (vector<string>::iterator amps=BornAmplitudes.begin();amps!=BornAmplitudes.end();amps++)
borns<<*amps<<endl;
borns.close();
res=true;
}
string virt= mgProcLibPath()+"VirtAmplitudes.dat";
if ( !filesystem::exists(virt) ) {
ofstream virts(virt.c_str());
for (vector<string>::iterator amps=VirtAmplitudes.begin();amps!=VirtAmplitudes.end();amps++)
virts<<*amps<<endl;
virts.flush();
virts.close();
res=true;
}
return res;
}
bool MadGraphAmplitude::checkAmplitudes(){
string born= mgProcLibPath()+"BornAmplitudes.dat";
string virt= mgProcLibPath()+"VirtAmplitudes.dat";
assert ( filesystem::exists(born)|| filesystem::exists(virt));
bool foundallborns=true;
for (vector<string>::iterator amps=BornAmplitudes.begin();amps!=BornAmplitudes.end();amps++){
ifstream borns(born.c_str());
string line;
bool foundthisborn=false;
while (std::getline(borns, line)) {
if(line==*amps)foundthisborn=true;
}
foundallborns&=foundthisborn;
}
bool foundallvirts=true;
for (vector<string>::iterator amps=VirtAmplitudes.begin();amps!=VirtAmplitudes.end();amps++){
ifstream virts(virt.c_str());
string line;
bool foundthisvirt=false;
while (std::getline(virts, line)) {
if(line==*amps)foundthisvirt=true;
}
foundallvirts&=foundthisvirt;
}
if (!foundallborns||!foundallvirts)
throw Exception() << "MadGraphAmplitude: The MadGraph amplitudes did not match the process.\n"
<< " Please remove:"<<mgProcLibPath()<< "\n"
<< " or set a process path via the interface:\n"
<< " set /Herwig/MatrixElements/Matchbox/Amplitudes/MadGraph:ProcessPath ..."
<< Exception::runerror;
return foundallborns && foundallvirts;
}
string MadGraphAmplitude::mgProcLibPath(){
string res=theProcessPath == "" ? factory()->buildStorage()+"MadGraphAmplitudes" : theProcessPath;
if (res.at(res.length()-1) != '/') res.append("/");
return res;
}
bool MadGraphAmplitude::initializeExternal() {
if ( filesystem::exists(mgProcLibPath()) ) {
if ( !filesystem::is_directory(mgProcLibPath()) )
throw Exception() << "MadGraphAmplitude: MadGraph amplitude storage '"
<< mgProcLibPath() << "' existing but not a directory."
<< Exception::runerror;
} else {
filesystem::create_directory(mgProcLibPath());
}
string runAmplitudes = factory()->runStorage() + "/MadGraphAmplitudes";
if ( filesystem::exists(runAmplitudes) ) {
if ( !filesystem::is_directory(runAmplitudes) )
throw Exception() << "MadGraphAmplitude: MadGraph amplitude storage '"
<< runAmplitudes << "' existing but not a directory."
<< Exception::runerror;
} else {
filesystem::create_directory(runAmplitudes);
}
//EW-consistency check:
Energy MW=getParticleData(ParticleID::Wplus)->hardProcessMass();
Energy MZ=getParticleData(ParticleID::Z0)->hardProcessMass();
if( MW!= sqrt(MZ*MZ/2.0+sqrt(MZ*MZ*MZ*MZ/4.0-Constants::pi*SM().alphaEMMZ()*MZ*MZ/ sqrt(2.0)/SM().fermiConstant()))){
generator()->log()<<"\n\n-----!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-----";
generator()->log() << "\nYou are using a EW scheme which is inconsistent with the MadGraph parametisation:\n\n"
<<MW/GeV<< " GeV==MW!= sqrt(MZ^2/2+sqrt(MZ^4/4.0-pi*alphaEMMZ*MZ^2/ sqrt(2)/G_f))=="<<
sqrt(MZ*MZ/2.0+sqrt(MZ*MZ*MZ*MZ/4.0-Constants::pi*SM().alphaEMMZ()*MZ*MZ/ sqrt(2.0)/SM().fermiConstant()))/GeV
<<" GeV\n\n-----!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-----\n";
}
string para= factory()->runStorage()+"/MadGraphAmplitudes"+"/MG-Parameter.dat";
ofstream params(para.c_str());
params<<"$WZ$ " <<std::setiosflags(ios::scientific) <<getParticleData(ParticleID::Z0)->hardProcessWidth() /GeV;
params<<"\n$WW$ " <<std::setiosflags(ios::scientific) <<getParticleData(ParticleID::Wplus)->hardProcessWidth()/GeV;
params<<"\n$alphas$ " <<std::setiosflags(ios::scientific) <<SM().alphaS();
params<<"\n$GF$ " <<std::setiosflags(ios::scientific) <<SM().fermiConstant()*GeV2 ;
params<<"\n$alphaMZ$ " <<std::setiosflags(ios::scientific) <<1/SM().alphaEMMZ();
params<<"\n$MZ$ " <<std::setiosflags(ios::scientific) <<getParticleData(ParticleID::Z0)->hardProcessMass() /GeV<<flush;
params<<"\n$MW$ " <<std::setiosflags(ios::scientific) <<getParticleData(ParticleID::Wplus)->hardProcessMass() /GeV<<flush;
params<<"\n$sw2$ " <<std::setiosflags(ios::scientific) << SM().sin2ThetaW() <<flush;
if(theMGmodel=="heft"&&!keepinputtopmass){
if ( factory()->initVerbose() ) {
generator()->log()<<"\n---------------------------------------------------------------";
generator()->log()<<"\n---------------------------------------------------------------";
generator()->log()<<"\nNote: You are using the Higgs Effective model (heft) in ";
generator()->log()<<"\n Madgraph. We assume you try to calculate NLO with ";
generator()->log()<<"\n the GoSam virtual amplitudes. To match the models we ";
generator()->log()<<"\n therefore set the topmass to 10000000 GeV.";
generator()->log()<<"\n\n For more information see the \\tau parameter in:";
generator()->log()<<"\n https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Models/HiggsEffective";
generator()->log()<<"\n\n The Effective Higgs model in Gosam is using mT=infinity";
generator()->log()<<"\n\n\n If you want to use the LO matrixelements of MadGraph with finite' topmass you need to add: ";
generator()->log()<<"\n\n set Madgraph:KeepInputTopMass Yes";
generator()->log()<<"\n\n to your input file.";
generator()->log()<<"\n---------------------------------------------------------------";
generator()->log()<<"\n---------------------------------------------------------------\n";
}
params<<"\n$MT$ 10000000." <<flush;
}else{
params<<"\n$MT$ " <<std::setiosflags(ios::scientific) << getParticleData(ParticleID::t)->hardProcessMass() /GeV <<flush;
}
params<<"\n$WT$ " <<std::setiosflags(ios::scientific) << getParticleData(ParticleID::t)->hardProcessWidth() /GeV <<flush;
params<<"\n$MB$ " <<std::setiosflags(ios::scientific) << getParticleData(ParticleID::b)->hardProcessMass() /GeV <<flush;
params<<"\n$MH$ " <<std::setiosflags(ios::scientific) << getParticleData(ParticleID::h0)->hardProcessMass() /GeV <<flush;
params<<"\n$WH$ " <<std::setiosflags(ios::scientific) << getParticleData(ParticleID::h0)->hardProcessWidth() /GeV <<flush;
params<<"\n$MTA$ " <<std::setiosflags(ios::scientific) << getParticleData(ParticleID::tauplus)->hardProcessMass() /GeV <<flush;
string cmd = "python " + bindir_ + "/mg2herwig ";
cmd +=" --buildpath "+mgProcLibPath();
cmd += !theProcessPath.empty() ? " --absolute-links" : "";
cmd +=" --model "+theMGmodel;
cmd +=" --runpath "+factory()->runStorage()+"/MadGraphAmplitudes ";
cmd +=" --datadir "+pkgdatadir_;
cmd +=" --includedir "+includedir_;
cmd +=" --cacheprefix "+RunDirectories::prefix();
std::stringstream as,aem;
as << factory()->orderInAlphaS();
cmd +=" --orderas "+as.str() ;
aem <<factory()->orderInAlphaEW();
cmd +=" --orderew "+aem.str();
// TODO move to boost::system
writeAmplitudesDat();
if (filesystem::exists(mgProcLibPath()+"InterfaceMadGraph.so") ){
//set the parameters
checkAmplitudes();
std::system(cmd.c_str());
ranMadGraphInitializeExternal = true;
return true;
}
char cwd[1024];
if ( !getcwd(cwd,sizeof(cwd)) )
throw Exception() << "MadGraphAmplitude: failed to determine current working directory\n"
<< Exception::runerror;
cmd +=" --madgraph " + madgraphPrefix_ + "/bin " ;
cmd +="--build > ";
cmd += mgProcLibPath()+"MG.log 2>&1";
generator()->log() << "\n>>> Compiling MadGraph amplitudes. This may take some time -- please be patient.\n"
<< ">>> In case of problems see " << mgProcLibPath() << "MG.log for details.\n\n"
<< flush;
std::system(cmd.c_str());
cmd = "python " + bindir_ + "/mg2herwig ";
cmd +=" --buildpath "+mgProcLibPath();
cmd +=" --model "+theMGmodel;
cmd +=" --runpath "+factory()->runStorage()+"/MadGraphAmplitudes ";
cmd +=" --datadir "+pkgdatadir_;
cmd +=" --cacheprefix "+RunDirectories::prefix();
as.clear();
aem.clear();
as << factory()->orderInAlphaS();
cmd +=" --orderas "+as.str() ;
aem <<factory()->orderInAlphaEW();
cmd +=" --orderew "+aem.str();
std::system(cmd.c_str());
ranMadGraphInitializeExternal = true;
return filesystem::exists(mgProcLibPath()+"InterfaceMadGraph.so");
}
int MadGraphAmplitude::externalId(const cPDVector& proc) {
for (int i=0;i<100;i++){
colourindex.push_back(-2);
}
assert(!BornAmplitudes.empty()||!VirtAmplitudes.empty());
writeAmplitudesDat();
int res=0;
string amp="";
int k=0;
for (cPDVector::const_iterator it=proc.begin();it!=proc.end();it++,k++){
amp+=std::to_string( (*it)->id())+" ";if (k==1)amp+=" > ";
}
string born= mgProcLibPath()+"BornAmplitudes.dat";
string virt= mgProcLibPath()+"VirtAmplitudes.dat";
assert ( filesystem::exists(born)|| filesystem::exists(virt));
ifstream borns(born.c_str());
string line;
while (std::getline(borns, line)) {
res+=1;
if(line==amp)return res;
}
ifstream virts(virt.c_str());
while (std::getline(virts, line)) {
res+=1;
if(line==amp)return res;
}
throw Exception() << "MadGraphAmplitude: One amplitude has no externalId. Please remove the MadGraphAmplitude-folder and rebuild.\n" << Exception::runerror;
return res;
}
bool MadGraphAmplitude::ranMadGraphInitializeExternal = false;
void MadGraphAmplitude::doinit() {
if ( !ranMadGraphInitializeExternal ) {
initializeExternal();
}
MatchboxAmplitude::doinit();
}
void MadGraphAmplitude::doinitrun() {
if ( !ranMadGraphInitializeExternal ) {
initializeExternal();
}
MatchboxAmplitude::doinitrun();
}
bool MadGraphAmplitude::canHandle(const PDVector& p,
Ptr<MatchboxFactory>::tptr factory,
bool virt) const {
if ( factory->processData()->diagramMap().find(p) !=
factory->processData()->diagramMap().end() )
return true;
vector<Ptr<Tree2toNDiagram>::ptr> diags =
factory->diagramGenerator()->generate(p,orderInGs(),orderInGem());
if ( diags.empty() )
return false;
factory->processData()->diagramMap()[p] = diags;
string amp="";
int k=0;
for (PDVector::const_iterator it=p.begin();it!=p.end();it++,k++){
amp+=std::to_string( (*it)->id())+" ";if (k==1)amp+=" > ";
}
if (virt && factory->highestVirt()>=p.size()){
VirtAmplitudes.push_back(amp);
}else{
BornAmplitudes.push_back(amp);
}
return true;
}
void MadGraphAmplitude::prepareAmplitudes(Ptr<MatchboxMEBase>::tcptr me) {
useMe();
if ( !calculateTreeAmplitudes() ) {
MatchboxAmplitude::prepareAmplitudes(me);
return;
}
if (colourindex.empty()) {
for (int i=0;i<100;i++){
colourindex.push_back(-2);
}
}
lastMatchboxXComb()->clearheljamp();
lastMatchboxXComb()->clearhelLNjamp();
initProcess(mePartonData());
MatchboxAmplitude::prepareAmplitudes(me);
}
Complex MadGraphAmplitude::evaluate(size_t i, const vector<int>& hel, Complex& largeN) {
//find the colourline:
int ii = -1;
int xx=lastMatchboxXComb()->externalId();
if (colourindex.size()<=i) {
colourindex.clear();
for (size_t l=0;l<=i+10;l++){
colourindex.push_back(-2);
}
}
if(colourindex[i]!=-2){
ii = colourindex[i];
if (ii==-1) {
largeN = Complex(0.0);
return Complex(0.0);
}
} else {
set<vector<size_t> > a ;
if(lastMatchboxXComb()->colourBasisDim()>0)a=colourOrdering(i);
int ncol=-1;
MG_NCol(&xx,&ncol);
assert(ncol!=-1);
for( int it = 0; it < ncol; it++ ){
int n = 0;
for ( cPDVector::const_iterator nx = mePartonData().begin();
nx != mePartonData().end(); nx++ )
if ( (*nx)->coloured() ) n++;
set<vector<size_t> > tmpset;
vector<size_t> tmpvek;
for ( int it2 = 0; it2 < n; it2++ ) {
int ret=-2;
MG_Colour(&xx,&it,&it2,&ret);
assert(ret !=-2);
if (ret== -1)
break;
if ( ret == 0 ) {
n++;
tmpset.insert(tmpvek);
tmpvek.clear();
} else {
tmpvek.push_back(ret-1);
}
if( it2 == n-1 ) tmpset.insert(tmpvek);
}
bool found_all = true;
for ( set<vector<size_t> >::iterator it3 = a.begin(); it3 != a.end(); it3++ ) {
bool found_it3=false;
for ( set<vector<size_t> >::iterator it4 = tmpset.begin(); it4 != tmpset.end(); it4++ ) {
vector<size_t> it3tmp = gluonsFirst(*it3);
vector<size_t> it4tmp = (*it4);
if ( it3tmp.size() != it4tmp.size() ) continue;
if ( it3tmp == it4tmp ) found_it3 = true;
}
found_all = found_all && found_it3;
}
if ( found_all ) {
colourindex[i]=it;
ii=it;
}
}
}
if ( ii == -1 ){
colourindex[i]=ii;
largeN = Complex(0.0);
return Complex(0.0);
}
const map<vector<int>,vector < complex<double> > >& tmp = lastMatchboxXComb()->heljamp();
const map<vector<int>,vector < complex<double> > >& tmpLN = lastMatchboxXComb()->helLNjamp();
if( tmp.find(hel) != tmp.end()) {
largeN = tmpLN.find(hel)->second[ii];
return tmp.find(hel)->second[ii];;
}
double units = pow(sqrt(lastSHat())/GeV,int(hel.size())-4);
int heltmp[10];
for(size_t j=0;j<hel.size();j++){
int cross=crossingMap()[j];
if( (cross>1&&j<=1)||(cross<=1&&j>1)){
heltmp[cross]=-1*hel[j];}
else{heltmp[cross]=hel[j];}
}
vector<Lorentz5Momentum> reshuffled = meMomenta();
if ( !reshuffleMasses().empty() && reshuffled.size() > 3 ) {
const cPDVector& pdata = mePartonData();
const map<long,Energy>& masses = reshuffleMasses();
lastMatchboxXComb()->reshuffle(reshuffled,pdata,masses);
}
double momenta[50];
size_t j=0;
for (size_t i=0;i<mePartonData().size();i++){
momenta[j]=abs(reshuffled[i].e()/GeV)<1.e-13?0.:double(reshuffled[i].e()/GeV);
momenta[j+1]=abs(reshuffled[i].x()/GeV)<1.e-13?0.:double(reshuffled[i].x()/GeV);
momenta[j+2]=abs(reshuffled[i].y()/GeV)<1.e-13?0.:double(reshuffled[i].y()/GeV);
momenta[j+3]=abs(reshuffled[i].z()/GeV)<1.e-13?0.:double(reshuffled[i].z()/GeV);
if(momenta[j ] == 0. && momenta[j+1] == 0. &&
momenta[j+2] == 0. && momenta[j+3] == 0. )
return 0.;
j+=4;
}
MG_Calculate_wavefunctions_born(&xx, &momenta[0], &heltmp[0]);
int ncol=-1;
MG_NCol(&xx,&ncol);
Complex res;
Complex resLN;
for( int it = 0; it < ncol; it++ ){
double dd[2];
MG_Jamp(&xx,&it,&dd[0]);
Complex d(dd[0],dd[1]);
if(it==ii)res=d*units;
lastMatchboxXComb()->pushheljamp(hel,d*units);
double ddLN[2];
MG_LNJamp(&xx,&it,&ddLN[0]);
Complex dLN(ddLN[0],ddLN[1]);
if(it==ii)resLN=dLN*units;
lastMatchboxXComb()->pushhelLNjamp(hel,dLN*units);
}
largeN = resLN;
return res;
}
vector<unsigned int> MadGraphAmplitude::physicalHelicities(const vector<int>& hel) const {
vector<unsigned int> res(hel.size(),0);
for ( size_t j = 0; j < hel.size(); ++j ) {
int cross = crossingMap()[j];
int xhel = 0;
if ( (cross > 1 && j <= 1) || (cross <= 1 && j > 1) )
xhel = -1*hel[j];
else
xhel = hel[j];
if ( mePartonData()[cross]->iSpin() == PDT::Spin1Half )
res[cross] = (xhel == -1 ? 0 : 1);
else if ( mePartonData()[cross]->iSpin() == PDT::Spin1 )
res[cross] = (unsigned int)(xhel + 1);
else if ( mePartonData()[cross]->iSpin() == PDT::Spin0 )
res[cross] = 0;
else assert(false);
}
return res;
}
LorentzVector<Complex> MadGraphAmplitude::plusPolarization(const Lorentz5Momentum& p,
const Lorentz5Momentum& n,
int i) const {
int tmp=i;
double pg[4],ng[4],poltmp[8];
pg[0]=p.e()/GeV;pg[1]=p.x()/GeV;pg[2]=p.y()/GeV;pg[3]=p.z()/GeV;
ng[0]=n.e()/GeV;ng[1]=n.x()/GeV;ng[2]=n.y()/GeV;ng[3]=n.z()/GeV;
MG_vxxxxx(&pg[0],&ng[0],&tmp,&poltmp[0]);
complex<double> pol[6];
pol[0]=Complex(poltmp[0],poltmp[1]);
pol[1]=Complex(poltmp[2],poltmp[3]);
pol[2]=Complex(poltmp[4],poltmp[5]);
pol[3]=Complex(poltmp[6],poltmp[7]);
LorentzVector<Complex> polarization(pol[1],pol[2],pol[3],pol[0]);
return polarization;
}
bool equalsModulo(unsigned int i, const vector<int>& a, const vector<int>& b) {
assert(a.size()==b.size());
if ( a[i] == b[i] )
return false;
for ( unsigned int k = 0; k < a.size(); ++k ) {
if ( k == i )
continue;
if ( a[k] != b[k] )
return false;
}
return true;
}
vector<size_t> MadGraphAmplitude::gluonsFirst(vector<size_t> vec) {
vector<size_t> vecout;
for(vector<size_t>::iterator it= vec.begin();it!= vec.end();++it)
if ( mePartonData()[crossingMap()[*it]]->id()==21)
vecout.push_back(crossingMap()[*it]);
for(vector<size_t>::iterator it= vec.begin();it!= vec.end();++it)
if ( mePartonData()[crossingMap()[*it]]->id()!=21)
vecout.push_back(crossingMap()[*it]);
return vecout;
}
double MadGraphAmplitude::spinColourCorrelatedME2(pair<int,int> ij,
const SpinCorrelationTensor& c) const {
vector<Lorentz5Momentum> reshuffled = meMomenta();
if ( !reshuffleMasses().empty() && reshuffled.size() > 3 ) {
const cPDVector& pdata = mePartonData();
const map<long,Energy>& masses = reshuffleMasses();
lastMatchboxXComb()->reshuffle(reshuffled,pdata,masses);
}
Lorentz5Momentum p = reshuffled[ij.first];
Lorentz5Momentum n = reshuffled[ij.second];
LorentzVector<Complex> polarization = plusPolarization(p,n,ij.first<2?-1:1);
int iCrossed = -1;
for ( unsigned int k = 0; k < crossingMap().size(); ++k )
if ( crossingMap()[k] == ij.first ) {
iCrossed = k;
break;
}
assert(iCrossed!=-1);
if(ij.first>1) polarization =polarization.conjugate();
if(iCrossed<2) polarization =polarization.conjugate();
Complex pFactor = (polarization*c.momentum())/sqrt(abs(c.scale()));
double avg =
colourCorrelatedME2(ij)*(-c.diagonal()+ (c.scale() > ZERO ? 1. : -1.)*norm(pFactor));
Complex csCorr = 0.0;
if ( calculateColourSpinCorrelator(ij) ) {
set<const CVector*> done;
for ( AmplitudeConstIterator a = lastAmplitudes().begin();
a != lastAmplitudes().end(); ++a ) {
if ( done.find(&(a->second)) != done.end() )
continue;
AmplitudeConstIterator b = lastAmplitudes().begin();
while ( !equalsModulo(iCrossed,a->first,b->first) )
if ( ++b == lastAmplitudes().end() )
break;
if ( b == lastAmplitudes().end() || done.find(&(b->second)) != done.end() )
continue;
done.insert(&(a->second)); done.insert(&(b->second));
if ( a->first[iCrossed] == 1 )
swap(a,b);
csCorr -= colourBasis()->colourCorrelatedInterference(ij,mePartonData(),a->second,b->second);
}
lastColourSpinCorrelator(ij,csCorr);
} else {
csCorr = lastColourSpinCorrelator(ij);
}
double corr =
2.*real(csCorr*sqr(pFactor));
double Nc = generator()->standardModel()->Nc();
double cfac = 1.;
if ( mePartonData()[ij.first]->iColour() == PDT::Colour8 ) {
cfac = Nc;
} else if ( mePartonData()[ij.first]->iColour() == PDT::Colour3 ||
mePartonData()[ij.first]->iColour() == PDT::Colour3bar ) {
cfac = (sqr(Nc)-1.)/(2.*Nc);
} else assert(false);
return
( avg +(c.scale() > ZERO ? 1. : -1.)*corr/cfac);
}
void MadGraphAmplitude::prepareOneLoopAmplitudes(Ptr<MatchboxMEBase>::tcptr ){
assert(false);
}
double MadGraphAmplitude::oneLoopInterference() const {
if ( !calculateOneLoopInterference() )
return lastOneLoopInterference();
evaloneLoopInterference();
return lastOneLoopInterference();
}
void MadGraphAmplitude::evaloneLoopInterference() const {
double units = pow(lastSHat()/GeV2,int(mePartonData().size())-4);
vector<Lorentz5Momentum> reshuffled = meMomenta();
if ( !reshuffleMasses().empty() && reshuffled.size() > 3 ) {
const cPDVector& pdata = mePartonData();
const map<long,Energy>& masses = reshuffleMasses();
lastMatchboxXComb()->reshuffle(reshuffled,pdata,masses);
}
double virt[20];
double momenta[50];
size_t j=0;
for (size_t i=0;i<mePartonData().size();i++){
momenta[j]=abs(reshuffled[i].e()/GeV)<1.e-13?0.:double(reshuffled[i].e()/GeV);
momenta[j+1]=abs(reshuffled[i].x()/GeV)<1.e-13?0.:double(reshuffled[i].x()/GeV);
momenta[j+2]=abs(reshuffled[i].y()/GeV)<1.e-13?0.:double(reshuffled[i].y()/GeV);
momenta[j+3]=abs(reshuffled[i].z()/GeV)<1.e-13?0.:double(reshuffled[i].z()/GeV);
j+=4;
}
int xx=lastMatchboxXComb()->externalId();
MG_Calculate_wavefunctions_virt(&xx,&momenta[0],&virt[0]);
double ifact = 1.;
ifact = 1./4.;
if (lastMatchboxXComb()->matchboxME()->mePartonData()[0]->iColour() == PDT::Colour3 ||
lastMatchboxXComb()->matchboxME()->mePartonData()[0]->iColour() == PDT::Colour3bar )
ifact /= SM().Nc();
else if ( lastMatchboxXComb()->matchboxME()->mePartonData()[0]->iColour() == PDT::Colour8 )
ifact /= (SM().Nc()*SM().Nc()-1.);
if ( lastMatchboxXComb()->matchboxME()->mePartonData()[1]->iColour() == PDT::Colour3 ||
lastMatchboxXComb()->matchboxME()->mePartonData()[1]->iColour() == PDT::Colour3bar )
ifact /= SM().Nc();
else if ( mePartonData()[1]->iColour() == PDT::Colour8 )
ifact /= (SM().Nc()*SM().Nc()-1.);
ifact *= lastMatchboxXComb()->matchboxME()->finalStateSymmetry();
lastOneLoopInterference(virt[1]/ifact*units);
lastOneLoopPoles(pair<double, double>(virt[2]/ifact*units,virt[3]/ifact*units));
}
void MadGraphAmplitude::persistentOutput(PersistentOStream & os) const {
- os << theOrderInGs << theOrderInGem << BornAmplitudes << VirtAmplitudes
- << colourindex<<crossing << theProcessPath << theMGmodel << bindir_
+ os << theOrderInGs << theOrderInGem
+ << colourindex<<crossing;
+
+ //Static variables need to be written only once.
+ os << theProcessPath << theMGmodel << bindir_
<< pkgdatadir_ << madgraphPrefix_;
+ theProcessPath.clear();
+ theMGmodel.clear();
+ bindir_.clear();
+ pkgdatadir_.clear();
+ madgraphPrefix_.clear();
+
+ os << BornAmplitudes.size();
+ os << VirtAmplitudes.size();
+ for (auto amp : BornAmplitudes) os<<amp;
+ for (auto amp : VirtAmplitudes) os<<amp;
+
+ BornAmplitudes.clear();
+ VirtAmplitudes.clear();
}
void MadGraphAmplitude::persistentInput(PersistentIStream & is, int) {
- is >> theOrderInGs >> theOrderInGem >> BornAmplitudes >> VirtAmplitudes
- >> colourindex>>crossing >> theProcessPath >> theMGmodel >> bindir_
- >> pkgdatadir_ >> madgraphPrefix_;
+ is >> theOrderInGs >> theOrderInGem
+ >> colourindex>>crossing;
+
+ string input=""; is>>input; if (!input.empty())theProcessPath=input;
+ input=""; is>>input; if (!input.empty())theMGmodel=input;
+ input=""; is>>input; if (!input.empty())bindir_=input;
+ input=""; is>>input; if (!input.empty())pkgdatadir_=input;
+ input=""; is>>input; if (!input.empty())madgraphPrefix_=input;
+
+ int bs,vs;
+ is >> bs;
+ is >> vs;
+ string amp="";
+ for (int i=0;i<bs;i++){
+ is>>amp;
+ BornAmplitudes.push_back(amp);
+ amp="";
+ }
+ for (int i=0;i<vs;i++){
+ is>>amp;
+ VirtAmplitudes.push_back(amp);
+ amp="";
+ }
+
}
void MadGraphAmplitude::setProcessPath(string p){
theProcessPath=p;
}
string MadGraphAmplitude::getProcessPath() const{
return theProcessPath;
}
void MadGraphAmplitude::setBinDir(string p){
bindir_=p;
}
string MadGraphAmplitude::getBinDir() const {
return bindir_;
}
void MadGraphAmplitude::setDataDir(string p){
pkgdatadir_=p;
}
string MadGraphAmplitude::getDataDir() const {
return pkgdatadir_;
}
void MadGraphAmplitude::setModel(string p) {
theMGmodel=p;
}
string MadGraphAmplitude::getModel() const {
return theMGmodel;
}
void MadGraphAmplitude::setMadgraphPrefix(string p) {
madgraphPrefix_=p;
}
string MadGraphAmplitude::getMadgraphPrefix() const {
return madgraphPrefix_;
}
// *** Attention *** The following static variable is needed for the type
// description system in ThePEG. Please check that the template arguments
// are correct (the class and its base class), and that the constructor
// arguments are correct (the class name and the name of the dynamically
// loadable library where the class implementation can be found).
DescribeClass<MadGraphAmplitude,MatchboxAmplitude>
describeHerwigMadGraphAmplitude("Herwig::MadGraphAmplitude", "HwMatchboxMadGraph.so");
void MadGraphAmplitude::Init() {
static ClassDocumentation<MadGraphAmplitude>
documentation("MadGraphAmplitude",
"Matrix elements have been calculated using MadGraph5 \\cite{Alwall:2011uj}",
"%\\cite{Alwall:2011uj}\n"
"\\bibitem{Alwall:2011uj}\n"
"J. Alwall et al.,\n"
"``MadGraph 5 : Going Beyond,''\n"
"arXiv:1106.0522 [hep-ph].\n"
"%%CITATION = ARXIV:1106.0522;%%");
static Parameter<MadGraphAmplitude,string> interfaceProcessPath
("ProcessPath",
"The Process Path.",
0 , "",false, false,
&MadGraphAmplitude::setProcessPath,
&MadGraphAmplitude::getProcessPath);
static Parameter<MadGraphAmplitude,string> interfaceModel
("Model",
"The MadGraph-Model.",
0, "loop_sm",false, false,
&MadGraphAmplitude::setModel,
&MadGraphAmplitude::getModel);
static Switch<MadGraphAmplitude,bool> interfacekeepinputtopmass
("KeepInputTopMass",
"Switch On/Off formopt",
&MadGraphAmplitude::keepinputtopmass, false, false, false);
static SwitchOption interfacekeepinputtopmassYes
(interfacekeepinputtopmass,
"Yes",
"Yes",
true);
static SwitchOption interfacekeepinputtopmassNo
(interfacekeepinputtopmass,
"No",
"No",
false);
static Parameter<MadGraphAmplitude,string> interfaceMadgraphPrefix
("MadgraphPrefix",
"The prefix for the location of MadGraph",
0, string(MADGRAPH_PREFIX),
false, false,
&MadGraphAmplitude::setMadgraphPrefix,
&MadGraphAmplitude::getMadgraphPrefix);
/// JB: I don't know why these should be needed:
static Parameter<MadGraphAmplitude,string> interfaceBinDir
("BinDir",
"The location for the installed executable",
0, string(HERWIG_BINDIR),
false, false,
&MadGraphAmplitude::setBinDir,
&MadGraphAmplitude::getBinDir);
static Parameter<MadGraphAmplitude,string> interfacePKGDATADIR
("DataDir",
"The location for the installed Herwig data files",
0, string(HERWIG_PKGDATADIR),
false, false,
&MadGraphAmplitude::setDataDir,
&MadGraphAmplitude::getDataDir);
}
diff --git a/MatrixElement/Matchbox/External/MadGraph/mg2herwig.in b/MatrixElement/Matchbox/External/MadGraph/mg2herwig.in
--- a/MatrixElement/Matchbox/External/MadGraph/mg2herwig.in
+++ b/MatrixElement/Matchbox/External/MadGraph/mg2herwig.in
@@ -1,365 +1,389 @@
#! /usr/bin/env python
import os,sys,glob,errno,shutil,time,fnmatch,tempfile
from optparse import OptionParser
def mkdir_p(path):
"""Recursive mkdir"""
if not os.path.isdir(path):
os.makedirs(path)
def finddirs(pattern, path):
"""Find all paths which contain a filename matching 'pattern'"""
result = [
root
for root, _, files in os.walk(path)
if fnmatch.filter(files, pattern)
]
return result
# fill the proc.dat file from BornAmplitudes.dat and VirtAmplitudes.dat.
def fillprocs(model,oras,orew):
"""Fill proc.dat from BornAmplitudes.dat and VirtAmplitudes.dat"""
oras=int(oras)
orew=int(orew)
bornlist=[]
virtlist=[]
result = []
result.append('set fortran_compiler @FC@ --no_save')
result.append("import model "+model)
borns="BornAmplitudes.dat"
virts="VirtAmplitudes.dat"
procnr=0
virtlines=[]
bornlines=[]
# first pass to work out leg numbers
minlegs=100
legs=0
for i in [borns, virts]:
with open(i, "r") as f:
for line in f:
line = line.split(" ")
N = len(line)
if N < minlegs:
minlegs = N
for it in line:
if it.replace("-","").isdigit():
legs += 1
#conversion for heft model to go from (2QCD+1QED)->1HIG for each FS HIGGS.
if model=="heft":
HIG = oras+orew-legs+2
if HIG % 2 == 0:
HIG = HIG//2
else:
sys.stderr.write("Warning: No possible coupling power:(int(oras)+int(orew)-legs+2)%2!=0\n")
exit(1)
else:
HIG = 0
with open(borns, "r") as f:
for i, line in enumerate(f):
#this assumes extra QCD emmissions
addalphas = len(line.split(" ")) - minlegs
line = line.rstrip()
procnr += 1
bornlist.append(str(procnr))
cmd = "generate " if i==0 else "add process"
hig = ""
qcd = oras+addalphas
qed = orew
if HIG:
hig = "HIG=%s" % HIG
qcd -= 2*HIG
qed -= HIG
bornlines.append("{cmd} {line} {hig} QCD<={qcd} QED<={qed} @{procnr}".format(**locals()))
result.extend(bornlines)
with open(virts, "r") as f:
for i, line in enumerate(f):
addalphas = len(line.split(" ")) - minlegs
line = line.rstrip()
procnr += 1
virtlist.append(str(procnr))
cmd = "generate " if i==0 else "add process"
qcd = oras+addalphas
qed = orew
virtlines.append("{cmd} {line} QCD<={qcd} QED<={qed} [ virt=QCD ] @{procnr}".format(**locals()))
if virtlines and bornlines:
result.append("output matchbox MG5 --postpone_model")
result.extend(virtlines)
result.append("output matchbox MG5 -f\n")
with open("proc.dat","w") as f:
f.write('\n'.join(result))
return bornlist,virtlist
def build_matchbox_tmp(pwd,buildpath,absolute_links):
"""Create the working directories and link the required files from central MG"""
pwd = os.path.abspath(pwd)
if not os.path.isabs(buildpath):
buildpath = os.path.join(pwd,buildpath)
resources =glob.glob(os.path.join(buildpath,"MG5","SubProcesses","MadLoop5_resources","*"))
resources+=glob.glob(os.path.join(buildpath,"MG5","Cards","*"))
resources+=glob.glob(os.path.join(buildpath,"MG5","Cards","SubProcesses","*"))
for i in resources:
f = os.path.join(MG_TMP, os.path.basename(i))
if not os.path.isfile(f) and not os.path.islink(f):
if absolute_links:
os.symlink(i,f)
else:
os.symlink(os.path.relpath(i,MG_TMP), f)
parser = OptionParser()
parser.add_option("-a", "--buildpath", dest="buildpath",help="Do not use this script. Only for Herwig internal use. ")
parser.add_option("-b", "--build", action="store_true", dest="build", default=True,help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-c", "--madgraph", dest="madgraph",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-d", "--runpath", dest="runpath",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-e", "--model", dest="model",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-f", "--orderas", dest="orderas",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-g", "--orderew", dest="orderew",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-i", "--datadir",dest="datadir",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-I", "--includedir",dest="includedir",help="Do not use this script. Only for Herwig internal use.")
parser.add_option("-l", "--absolute-links",action="store_true", dest="absolute_links", default=False,\
help="Do not use this script. Only for Herwig internal use.")
parser.add_option("--cacheprefix", dest="cacheprefix",help="Do not use this script. Only for Herwig internal use.")
(options, args) = parser.parse_args()
if not options.cacheprefix:
sys.stderr.write("Need a value for --cacheprefix\n")
exit(1)
cachedir = os.path.abspath(options.cacheprefix)
mkdir_p(cachedir)
#MG_TMP = tempfile.mkdtemp(prefix='MG_tmp_',dir=cachedir)
MG_TMP = os.path.join(cachedir, 'MG_tmp')
mkdir_p(MG_TMP)
pwd=os.getcwd()
param_card=""
if options.model=="loop_sm" or options.model=="heft":
if options.model=="loop_sm":
param_card="param_card.dat"
else:
param_card="param_card_"+options.model+".dat"
file = open("%s/MadGraphInterface/%s.in" % (options.datadir,param_card) , "r")
paramcard = file.read()
file.close()
file = open(options.runpath+"/"+param_card, "w")
params=open(options.runpath+"/MG-Parameter.dat", "r")
for line in params:
a=line.split()
paramcard=paramcard.replace(a[0],a[1])
params.close()
file.write(paramcard)
file.close()
elif options.model.startswith("/"):
os.system("python %s/write_param_card.py " % options.model)
else:
print "---------------------------------------------------------------"
print "---------------------------------------------------------------"
print "Warning: The model set for the MadGraph Interface "
print " needs a parameter setting by hand."
print " Please fill the param_card_"+options.model+".dat"
print " with your favourite assumptions."
print " And make sure Herwig uses the same parameters."
print "---------------------------------------------------------------"
print "---------------------------------------------------------------"
if os.path.isfile(options.buildpath +"/MG5/Cards/param_card.dat") and not os.path.isfile(options.runpath+"/"+"param_card_"+options.model+".dat"):
shutil.copyfile(options.buildpath +"/MG5/Cards/param_card.dat", options.runpath+"/"+"param_card_"+options.model+".dat")
time.sleep(1)
if not os.path.isdir(options.buildpath):
print "The MadGraph Install path did not exist. It has been created for you."
print "Just start Herwig read again.."
mkdir_p(options.buildpath)
exit()
os.chdir(options.buildpath)
if os.path.isfile("InterfaceMadGraph.so"):
build_matchbox_tmp(pwd,options.buildpath,options.absolute_links)
exit()
Bornlist,Virtlist=fillprocs(options.model,options.orderas,options.orderew)
if not options.madgraph and not os.path.isfile("InterfaceMadGraph.so"):
sys.stderr.write("*** MadGraph build failed, check logfile for details ***")
exit(1)
os.system("python "+options.madgraph+"/mg5_aMC proc.dat")
def make_case_stmts(func):
"""Create Fortran case statements for all processes"""
result = []
# add a case option for each item
for i in Bornlist + list(set(Virtlist) - set(Bornlist)):
if func == "SLOOPMATRIX(momenta,virt)" and i not in Virtlist:
continue
result.append(" CASE(%s)" % i)
result.append(" CALL MG5_%s_%s" % (i,func))
# if we have anything, add header and footer
if result:
result.insert(0,
" SELECT CASE (proc)")
result.append(" CASE DEFAULT")
result.append(" WRITE(*,*) '##W02A WARNING No id found '")
result.append(" END SELECT ")
return "\n".join(result)
else:
return ""
def write_interfaceMG():
"""Create the InterfaceMadGraph.f FORTRAN file"""
subs = {
"MG_CalculateBORNtxt" : make_case_stmts("BORN(momenta,hel)"),
"MG_CalculateVIRTtxt" : make_case_stmts("SLOOPMATRIX(momenta,virt)"),
"MG_Jamptxt" : make_case_stmts("GET_JAMP(color,Jamp)"),
"MG_LNJamptxt" : make_case_stmts("GET_LNJAMP(color,Jamp)"),
"MG_NColtxt" : make_case_stmts("GET_NCOL(color)"),
"MG_ColourMattxt" : make_case_stmts("GET_NCOLOR(i,j,color)"),
}
baseN = 5 if subs["MG_CalculateVIRTtxt"] else 3
subs["MG_vxxxxxtxt"] = """\
subroutine MG_vxxxxx(p, n,inc,VC)
$ bind(c, name='MG_vxxxxx')
IMPLICIT NONE
double precision p(0:3)
double precision n(0:3)
INTEGER inc
double precision VC(0:7)
double complex VCtmp({d})
call vxxxxx(p, 0d0,1,inc ,VCtmp)
VC(0)= real(VCtmp({a}))
VC(1)=aimag(VCtmp({a}))
VC(2)= real(VCtmp({b}))
VC(3)=aimag(VCtmp({b}))
VC(4)= real(VCtmp({c}))
VC(5)=aimag(VCtmp({c}))
VC(6)= real(VCtmp({d}))
VC(7)=aimag(VCtmp({d}))
END
""".format(a=baseN, b=baseN+1, c=baseN+2, d=baseN+3)
fname = os.path.join(
options.datadir,
"MadGraphInterface",
"InterfaceMadGraph.f.in"
)
with open(fname, 'r') as f:
tmp = f.read()
with open("InterfaceMadGraph.f", 'w') as f:
f.write(tmp.format(**subs))
write_interfaceMG()
make=" "
fortanfiles=glob.glob('*/*/*.f')+glob.glob('*/*/*/*.f')
for i in fortanfiles:
if "check_sa" not in i and "f2py_wrapper" not in i:
if not os.path.islink(i):
make += " "+i+"\\\n "
incfiles=glob.glob('*/*/*.inc')+glob.glob('*/*/*/*.inc')
coefdir=""
for i in incfiles:
if "nexternal.inc" in i:
coefdir+=" -I"+i.replace("nexternal.inc"," ")
file=open("makefile","w")
file.write("include MG5/Source/make_opts ")
if Virtlist!=[]:
- file.write("\nLIBDIR = MG5/lib\nLINKLIBS = -L$(LIBDIR) -lcts -liregi -L$(LIBDIR)/golem95_lib -lgolem")
- file.write("\nLIBS = $(LIBDIR)libcts.$(libext) $(LIBDIR)libgolem.$(libext) $(LIBDIR)libiregi.$(libext)")
+
+ collierlib=options.madgraph
+ collierlib=collierlib.replace("bin","HEPTools/collier")
+ onelooplib=options.madgraph
+ onelooplib=onelooplib.replace("bin","HEPTools/oneloop")
+
+ file.write("\nLIBDIR = MG5/lib")
+ file.write("\nLINKLIBS =-L$(LIBDIR) -lcts -liregi ")
+ if (os.path.exists("MG5/lib/ninja_lib")):
+ file.write("\nLINKLIBS += -L$(LIBDIR)/ninja_lib -lninja ")
+ if (os.path.exists(collierlib)):
+ file.write("\nLINKLIBS += -L%s -lcollier "%(collierlib))
+ if (os.path.exists(onelooplib)):
+ file.write("\nLINKLIBS += -L%s -lavh_olo "%(onelooplib))
+ if (os.path.exists("MG5/lib/golem95_lib")):
+ file.write("\nLINKLIBS += -L$(LIBDIR)/golem95_lib -lgolem")
+
+
file.write("\nPROCESS= InterfaceMadGraph.f "+make+"\n\nall: \n\t @FC@ @FFLAGS@ -w -fbounds-check -ffixed-line-length-none -fPIC -fno-f2c -shared -s -o InterfaceMadGraph.so -IMG5/SubProcesses/" )
if Virtlist!=[]:
- file.write(" -IMG5/lib/golem95_include ")
+ if (os.path.exists("MG5/lib/golem95_include")):
+ file.write(" -IMG5/lib/golem95_include ")
+ if (os.path.exists("MG5/lib/ninja_include")):
+ file.write(" -IMG5/lib/ninja_include ")
+
+
+ incldir=options.madgraph.replace("bin","HEPTools/include")
+
+ file.write(" -I%s -I./ "%incldir)
# Find all .mod files also in /usr/include if golem was build there.
# There can be an error message in the MadGraph output to add the golem include path to the makefiles.
# Usually MadGraph finds the path if its Golem was build in an separate dictionary.
# Our bootstrap script installs golem with gosam beside boost. Here MadGraph creates a link (->errormessage).
# If we can find the modfiles easily the user doesn't need to change the makefiles.
moddirs=finddirs('*.mod',options.includedir)
for moddir in moddirs:
file.write(" -I%s " % moddir)
if os.path.isdir("/usr/include"):
moddirs=finddirs('*.mod',"/usr/include")
for moddir in moddirs:
file.write(" -I%s " % moddir)
if coefdir != "":
file.write(coefdir)
file.write(" $(PROCESS) $(LINKLIBS) ")
file.close()
def replacetext(filename, sourceText, replaceText):
"""Replace text in existing file."""
with open(filename, "r") as f:
text = f.read()
with open(filename, "w") as f:
f.write(text.replace(sourceText, replaceText))
os.chdir(pwd)
os.chdir(options.buildpath)
replacetext("MG5/Source/MODEL/lha_read.f", "ident_card.dat", os.path.join(MG_TMP,"ident_card.dat"))
replacetext("MG5/Source/MODEL/lha_read.f", "param.log", os.path.join(MG_TMP,"param.log"))
if Virtlist:
replacetext("MG5/SubProcesses/MadLoopCommons.f",
"PREFIX='./'",
"PREFIX='%s'" % MG_TMP)
os.system("make")
if not os.path.isfile("InterfaceMadGraph.so"):
print "Second trial to make MadGraph Interface. "
print "Needed if new .mod files are produced by make."
os.system("make")
build_matchbox_tmp(pwd,options.buildpath,options.absolute_links)
diff --git a/MatrixElement/Matchbox/External/Makefile.am b/MatrixElement/Matchbox/External/Makefile.am
--- a/MatrixElement/Matchbox/External/Makefile.am
+++ b/MatrixElement/Matchbox/External/Makefile.am
@@ -1,95 +1,95 @@
SUBDIRS = BLHAGeneric VBFNLO NJet GoSam OpenLoops MadGraph
pkglib_LTLIBRARIES =
##############
if HAVE_GOSAM
pkglib_LTLIBRARIES += HwMatchboxGoSam.la
endif
HwMatchboxGoSam_la_LDFLAGS = \
$(AM_LDFLAGS) -module -version-info 14:0:0
HwMatchboxGoSam_la_CPPFLAGS = $(AM_CPPFLAGS) \
-DHERWIG_BINDIR="\"$(bindir)\"" \
-DHERWIG_PKGDATADIR="\"$(pkgdatadir)\"" \
-DGOSAM_PREFIX="\"$(GOSAMPREFIX)\""
HwMatchboxGoSam_la_SOURCES = \
GoSam/GoSamAmplitude.cc
###############
if HAVE_VBFNLO
pkglib_LTLIBRARIES += HwMatchboxVBFNLO.la
endif
HwMatchboxVBFNLO_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 3:0:0
HwMatchboxVBFNLO_la_CPPFLAGS = $(AM_CPPFLAGS)
HwMatchboxVBFNLO_la_CPPFLAGS += -I$(VBFNLOINCLUDE)
HwMatchboxVBFNLO_la_CPPFLAGS += -DVBFNLOLIB=$(VBFNLOLIB)
HwMatchboxVBFNLO_la_SOURCES = \
VBFNLO/VBFNLOAmplitude.cc \
VBFNLO/VBFNLOPhasespace.cc
###############
if HAVE_OPENLOOPS
pkglib_LTLIBRARIES += HwMatchboxOpenLoops.la
endif
HwMatchboxOpenLoops_la_SOURCES = \
OpenLoops/OpenLoopsAmplitude.cc
-HwMatchboxOpenLoops_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 13:0:0
+HwMatchboxOpenLoops_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 13:1:0
HwMatchboxOpenLoops_la_CPPFLAGS = $(AM_CPPFLAGS) \
-DOPENLOOPSLIBS="\"$(OPENLOOPSLIBS)\"" \
-DOPENLOOPSPREFIX="\"$(OPENLOOPSPREFIX)\""
##############
if HAVE_NJET
pkglib_LTLIBRARIES += HwMatchboxNJet.la
endif
HwMatchboxNJet_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 13:0:0
HwMatchboxNJet_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(NJETINCLUDEPATH) \
-DNJET_PREFIX="\"$(NJETPREFIX)\"" \
-DNJET_LIBS="\"$(NJETLIBPATH)\""
HwMatchboxNJet_la_SOURCES = \
NJet/NJetsAmplitude.cc
##############
if HAVE_MADGRAPH
pkglib_LTLIBRARIES += HwMatchboxMadGraph.la
endif
-HwMatchboxMadGraph_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:0:0
+HwMatchboxMadGraph_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 4:1:0
HwMatchboxMadGraph_la_SOURCES = \
MadGraph/MadGraphAmplitude.cc
HwMatchboxMadGraph_la_CPPFLAGS = $(AM_CPPFLAGS) \
-DHERWIG_BINDIR="\"$(bindir)\"" \
-DHERWIG_INCLUDEDIR="\"$(includedir)\"" \
-DHERWIG_PKGDATADIR="\"$(pkgdatadir)\"" \
-DMADGRAPH_PREFIX="\"$(MADGRAPHPREFIX)\""
diff --git a/MatrixElement/Matchbox/External/OpenLoops/OpenLoopsAmplitude.cc b/MatrixElement/Matchbox/External/OpenLoops/OpenLoopsAmplitude.cc
--- a/MatrixElement/Matchbox/External/OpenLoops/OpenLoopsAmplitude.cc
+++ b/MatrixElement/Matchbox/External/OpenLoops/OpenLoopsAmplitude.cc
@@ -1,510 +1,514 @@
// -*- C++ -*-
//
// OpenLoopsAmplitude.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the OpenLoopsAmplitude class.
//
#include "OpenLoopsAmplitude.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/EventRecord/Particle.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Interface/Reference.h"
#include "ThePEG/Interface/RefVector.h"
#include "ThePEG/Interface/Parameter.h"
#include "ThePEG/Interface/Switch.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/Utilities/DynamicLoader.h"
#include "Herwig/MatrixElement/Matchbox/MatchboxFactory.h"
#include <fstream>
#include <sstream>
#include <string>
#include <cstdlib>
using namespace Herwig;
#ifndef OPENLOOPSLIBS
#error Makefile.am needs to define OPENLOOPSLIBS
#endif
#ifndef OPENLOOPSPREFIX
#error Makefile.am needs to define OPENLOOPSPREFIX
#endif
OpenLoopsAmplitude::OpenLoopsAmplitude() :
theHiggsEff(false), use_cms(true), psp_tolerance(12){
}
OpenLoopsAmplitude::~OpenLoopsAmplitude() {
}
IBPtr OpenLoopsAmplitude::clone() const {
return new_ptr(*this);
}
IBPtr OpenLoopsAmplitude::fullclone() const {
return new_ptr(*this);
}
extern "C" void OLP_Start(const char*, int* i);
extern "C" void OLP_SetParameter(const char* ,double* ,double*,int*);
extern "C" void ol_setparameter_string(const char*, const char*);
extern "C" void OLP_PrintParameter(const char*);
extern "C" void OLP_EvalSubProcess(int*, double*, double*, double*, double*);
extern "C" void OLP_EvalSubProcess2(int*, double*, double*, double*, double*);
// id ps-point emitter polvec res
extern "C" void ol_evaluate_sc(int, double*, int, double*, double*);
extern "C" void OLP_Polvec(double*,double*,double*);
void OpenLoopsAmplitude::doinitrun() {
MatchboxOLPME::doinitrun();
}
vector<int> OpenLoopsAmplitude::idpair=vector<int>();
void OpenLoopsAmplitude::startOLP(const string& contract, int& status) {
string tempcontract=contract;
if ( ! (DynamicLoader::load(OpenLoopsLibs_+"/libopenloops.so") ||
DynamicLoader::load(OpenLoopsPrefix_+"/lib/libopenloops.so") ||
DynamicLoader::load("libopenloops.so") ||
DynamicLoader::load(OpenLoopsLibs_+"/libopenloops.dylib") ||
DynamicLoader::load("libopenloops.dylib")||
DynamicLoader::load(OpenLoopsPrefix_+"/lib/libopenloops.dylib") ) ) {
throw Exception() << "OpenLoopsAmplitude::startOLP(): Failed to load libopenloops.so/dylib\n"
<< DynamicLoader::lastErrorMessage
<< Exception::runerror;
}
string stabilityPrefix = factory()->runStorage() + "OpenLoops.StabilityLog";
assert(stabilityPrefix.size() < 256);
ol_setparameter_string("stability_logdir",stabilityPrefix.c_str());
ol_setparameter_string("install_path",OpenLoopsPrefix_.c_str());
int a=0;double null=0.0;double one=1.0;
int part[10]={1,2,3,4,5,6,15,23,24,25};string stri;
for (int i=0;i<10;i++){
map<long,Energy>::const_iterator it=reshuffleMasses().find(part[i]);
double mass;
if(it==reshuffleMasses().end())
mass = getParticleData(part[i])->hardProcessMass()/GeV;
else
mass = it->second/GeV;
double width=getParticleData(part[i])->hardProcessWidth()/GeV;
std::stringstream ss;
ss << part[i];
string str = ss.str();
stri="mass("+str+")";
OLP_SetParameter(stri.c_str(),&mass,&null,&a);
stri="width("+str+")";
OLP_SetParameter(stri.c_str(),&width,&null,&a);
}
stri="alphas";
one=SM().alphaS();
OLP_SetParameter( stri.c_str(),&one ,&null,&a);
stri="alpha";
one=SM().alphaEMMZ();
OLP_SetParameter(stri.c_str(),&one ,&null,&a);
OLP_Start(tempcontract.c_str(), &status);
didStartOLP() = true;
}
void OpenLoopsAmplitude::fillOrderFile(const map<pair<Process, int>, int>& procs) {
string orderFileName =
optionalContractFile().empty() ?
factory()->buildStorage() + name() + ".OLPContract.lh" :
optionalContractFile();
ofstream orderFile(orderFileName.c_str());
size_t asPower = 100;
size_t minlegs = 100;
size_t maxlegs = 0;
for ( map<pair<Process, int>, int>::const_iterator t = procs.begin() ; t != procs.end() ; ++t ) {
asPower = min(asPower, static_cast<size_t>(t->first.first.orderInAlphaS));
minlegs = min(minlegs, static_cast<size_t>(t->first.first.legs.size()));
maxlegs = max(maxlegs, static_cast<size_t>(t->first.first.legs.size()));
}
orderFile << "# OLP order file created by Herwig/Matchbox for OpenLoops\n\n";
orderFile << "CorrectionType QCD\n";
orderFile << "IRregularization " << (isDR() ? "DRED" : "CDR") << "\n";
orderFile << "extra answerfile " << (factory()->buildStorage() + name() + ".OLPAnswer.lh") << "\n";
orderFile << "extra psp_tolerance "<<psp_tolerance<<"\n";
orderFile << "extra use_cms "<<(use_cms?"1":"0")<< "\n";
if (theCollierLib) {
orderFile << "extra preset 2 "<<"\n";
if(theHiggsEff){
orderFile << "extra stability_mode 14\n";
orderFile << "extra redlib1 1\n";
}
}
if (theHiggsEff){
orderFile << "model heft\n";
}
orderFile << "\n";
for ( map<pair<Process, int>, int>::const_iterator p = procs.begin() ; p != procs.end() ; ++p ) {
std::stringstream Processstr;
std::stringstream Typestr;
Processstr << (*p).first.first.legs[0]->id() << " " << (*p).first.first.legs[1]->id() << " -> ";
for ( PDVector::const_iterator o = (*p).first.first.legs.begin() + 2 ; o != (*p).first.first.legs.end() ; ++o )
Processstr << (**o).id() << " ";
if ( (*p).first.second == ProcessType::treeME2 ) {
Typestr << "Tree";
} else if ( (*p).first.second == ProcessType::colourCorrelatedME2 ) {
Typestr << "ccTree";
} else if ( (*p).first.second == ProcessType::spinColourCorrelatedME2 ) {
Typestr << "sctree_polvect";
} else if ( (*p).first.second == ProcessType::oneLoopInterference ) {
Typestr << "Loop";
}
OpenLoopsProcInfo pro = OpenLoopsProcInfo((*p).second, -1, Processstr.str(), Typestr.str());
pro.setOAs(p->first.first.orderInAlphaS);
processmap[(*p).second] = pro;
}
vector < string > types;
types.push_back("Tree");
types.push_back("ccTree");
types.push_back("sctree_polvect");
types.push_back("Loop");
for ( size_t i = asPower ; i != asPower + maxlegs - minlegs + 1 ; i++ ) {
orderFile << "\n\nCouplingPower QCD " << i;
orderFile << "\n\n#AlphasPower " << i;
for ( vector<string>::iterator it = types.begin() ; it != types.end() ; it++ ) {
for ( map<int, OpenLoopsProcInfo>::iterator p = processmap.begin() ; p != processmap.end() ; ++p )
if ( (*p).second.Tstr() == *it && i == (unsigned int) (*p).second.orderAs() ) {
orderFile << "\nAmplitudeType " << *it << "\n";
break;
}
for ( map<int, OpenLoopsProcInfo>::iterator p = processmap.begin() ; p != processmap.end() ; ++p )
if ( (*p).second.Tstr() == *it && i == (unsigned int) (*p).second.orderAs() ) {
orderFile << (*p).second.Pstr() << "\n";
}
}
}
orderFile << flush;
}
bool OpenLoopsAmplitude::checkOLPContract() {
string contractFileName = factory()->buildStorage() + name() + ".OLPAnswer.lh";
ifstream infile(contractFileName.c_str());
string line;
vector < string > contractfile;
while (std::getline(infile, line)) {
contractfile.push_back(line);
}
for ( map<int, OpenLoopsProcInfo>::iterator p = processmap.begin() ; p != processmap.end() ; p++ ) {
bool righttype = false;
for ( vector<string>::iterator linex = contractfile.begin() ; linex != contractfile.end() ; ++linex ) {
if ( (*linex).find("AmplitudeType ")!= std::string::npos ) {
if ( (*linex).find(" " + (*p).second.Tstr() + " ")!= std::string::npos ) {
righttype = true;
} else {
righttype = false;
}
}
if ( righttype ) {
if ( (*linex).find((*p).second.Pstr()) != std::string::npos ){
if( (*p).second.Pstr().length() == (*linex).find("|") ) {
string sub = (*linex).substr((*linex).find("|") + 1, (*linex).find("#") - (*linex).find("|") - 1); // | 1 23 # buggy??
int subint;
int subint2;
istringstream(sub) >> subint >> subint2;
assert(subint==1);
(*p).second.setGID(subint2);
}
}
}
}
}
idpair.clear();
for (size_t i=0;i<processmap.size();i++)idpair.push_back(-1);
idpair.push_back(-1);
for ( map<int, OpenLoopsProcInfo>::iterator p = processmap.begin() ; p != processmap.end() ; p++ ) {
idpair[(*p).second.HID()]=(*p).second.GID();
if ( (*p).second.GID() == -1 ) return 0;
}
return 1;
}
bool OpenLoopsAmplitude::startOLP(const map<pair<Process, int>, int>& procs) {
string contractFileName = factory()->buildStorage() + name() + ".OLPAnswer.lh";
string orderFileName =
optionalContractFile().empty() ?
factory()->buildStorage() + name() + ".OLPContract.lh" :
optionalContractFile();
fillOrderFile(procs);
int status = -1;
startOLP(orderFileName, status);
if ( !checkOLPContract() ) {
return false;
}
if ( status != 1 ) return false;
return true;
}
void OpenLoopsAmplitude::evalSubProcess() const {
useMe();
double units = pow(lastSHat() / GeV2, mePartonData().size() - 4.);
fillOLPMomenta(lastXComb().meMomenta(),mePartonData(),reshuffleMasses());
double acc ;
double scale = sqrt(mu2() / GeV2);
if (hasRunningAlphaS()) {
int a=0;double null=0.0;double one=1.0;
string stri="alphas";
one=lastAlphaS();
OLP_SetParameter( stri.c_str(),&one ,&null,&a);
}
double out[7]={};
int id = olpId()[ProcessType::oneLoopInterference] ? olpId()[ProcessType::oneLoopInterference] : olpId()[ProcessType::treeME2];
assert ( idpair.size() != 0 );
OLP_EvalSubProcess2(&idpair[id], olpMomenta(), &scale, out,&acc );
if ( olpId()[ProcessType::oneLoopInterference] ) {
if(calculateTreeME2())lastTreeME2(out[3] * units);
lastOneLoopInterference((out[2])* units);
lastOneLoopPoles(pair<double, double>(out[0] * units, out[1] * units));
} else if ( olpId()[ProcessType::treeME2] ) {
lastTreeME2(out[0] * units);
}
}
void OpenLoopsAmplitude::evalColourCorrelator(pair<int, int> ) const {
double units = pow(lastSHat() / GeV2, mePartonData().size() - 4.);
fillOLPMomenta(lastXComb().meMomenta(),mePartonData(),reshuffleMasses());
double acc ;
double scale = sqrt(mu2() / GeV2);
if (hasRunningAlphaS()) {
int a=0;double null=0.0;double one=1.0;
string stri="alphas";
one=lastAlphaS();
OLP_SetParameter( stri.c_str(),&one ,&null,&a);
}
int n = lastXComb().meMomenta().size();
colourCorrelatorResults.resize(n * (n - 1) / 2);
assert ( idpair.size() != 0 );
int id = olpId()[ProcessType::colourCorrelatedME2];
OLP_EvalSubProcess2(&idpair[id], olpMomenta(), &scale, &colourCorrelatorResults[0],&acc );
for ( int i = 0 ; i < n ; ++i ){
for ( int j = i + 1 ; j < n ; ++j ) {
lastColourCorrelator(make_pair(i, j), colourCorrelatorResults[i+j*(j-1)/2] * units);
}
}
}
void OpenLoopsAmplitude::evalSpinColourCorrelator(pair<int , int > ) const {
assert(false);
}
double OpenLoopsAmplitude::spinColourCorrelatedME2(pair<int,int> ij,
const SpinCorrelationTensor& c) const{
double units = pow(lastSHat() / GeV2, mePartonData().size() - 4.);
fillOLPMomenta(lastXComb().meMomenta(),mePartonData(),reshuffleMasses());
if (hasRunningAlphaS()) {
int a=0;double null=0.0;double one=1.0;
string stri="alphas";
one=lastAlphaS();
OLP_SetParameter( stri.c_str(),&one ,&null,&a);
}
int emitter=ij.first+1;
int n = lastXComb().meMomenta().size();
assert ( idpair.size() != 0 ) ;
int id =idpair[olpId()[ProcessType::spinColourCorrelatedME2]];
//double * outx =new double[n];
spinColourCorrelatorResults.resize(n);
double polvec[4];
polvec[0]=c.momentum().e()/GeV;
polvec[1]=c.momentum().x()/GeV;
polvec[2]=c.momentum().y()/GeV;
polvec[3]=c.momentum().z()/GeV;
double avg= colourCorrelatedME2(ij)*(-c.diagonal());
ol_evaluate_sc(id, olpMomenta(),emitter,polvec,&spinColourCorrelatorResults[0]);
double corr =-1.*units * spinColourCorrelatorResults[ij.second]/c.scale()*c.momentum().dot(c.momentum());
double Nc = generator()->standardModel()->Nc();
double cfac = 1.;
if ( mePartonData()[ij.first]->iColour() == PDT::Colour8 ) {
cfac = Nc;
} else if ( mePartonData()[ij.first]->iColour() == PDT::Colour3 ||
mePartonData()[ij.first]->iColour() == PDT::Colour3bar ) {
cfac = (sqr(Nc)-1.)/(2.*Nc);
} else assert(false);
return
avg + corr/cfac;
}
string OpenLoopsAmplitude::OpenLoopsLibs_=OPENLOOPSLIBS;
string OpenLoopsAmplitude::OpenLoopsPrefix_=OPENLOOPSPREFIX;
void OpenLoopsAmplitude::setOpenLoopsLibs(string p){
OpenLoopsLibs_=p;
}
string OpenLoopsAmplitude::getOpenLoopsLibs() const{
return OpenLoopsLibs_;
}
void OpenLoopsAmplitude::setOpenLoopsPrefix(string p){
OpenLoopsPrefix_=p;
}
string OpenLoopsAmplitude::getOpenLoopsPrefix() const{
return OpenLoopsPrefix_;
}
// If needed, insert default implementations of virtual function defined
// in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs).
void OpenLoopsAmplitude::persistentOutput(PersistentOStream & os) const {
os << idpair << theHiggsEff << use_cms << theCollierLib << OpenLoopsLibs_ << OpenLoopsPrefix_;
+ OpenLoopsLibs_.clear();
+ OpenLoopsPrefix_.clear();
}
void OpenLoopsAmplitude::persistentInput(PersistentIStream & is, int) {
- is >> idpair >> theHiggsEff >> use_cms >> theCollierLib >> OpenLoopsLibs_ >> OpenLoopsPrefix_;
+ is >> idpair >> theHiggsEff >> use_cms >> theCollierLib ;
+ string input=""; is>>input; if (!input.empty())OpenLoopsLibs_=input;
+ input=""; is>>input; if (!input.empty())OpenLoopsPrefix_=input;
}
// *** Attention *** The following static variable is needed for the type
// description system in ThePEG. Please check that the template arguments
// are correct (the class and its base class), and that the constructor
// arguments are correct (the class name and the name of the dynamically
// loadable library where the class implementation can be found).
DescribeClass<OpenLoopsAmplitude, MatchboxOLPME> describeHerwigOpenLoopsAmplitude("Herwig::OpenLoopsAmplitude", "HwMatchboxOpenLoops.so");
void OpenLoopsAmplitude::Init() {
static ClassDocumentation<OpenLoopsAmplitude>
documentation("OpenLoopsAmplitude implements an interface to OpenLoops.",
"Matrix elements have been calculated using OpenLoops \\cite{Cascioli:2011va}",
"%\\cite{Cascioli:2011va}\n"
"\\bibitem{Cascioli:2011va}\n"
"F.~Cascioli et al.,\n"
"``Scattering Amplitudes with Open Loops,''\n"
"arXiv:1111.5206 [hep-ph].\n"
"%%CITATION = ARXIV:1111.5206;%%");
static Switch<OpenLoopsAmplitude,bool> interfaceHiggsEff
("HiggsEff",
"Switch On/Off for effective higgs model.",
&OpenLoopsAmplitude::theHiggsEff, false, false, false);
static SwitchOption interfaceHiggsEffYes
(interfaceHiggsEff,
"Yes",
"Yes",
true);
static SwitchOption interfaceHiggsEffNo
(interfaceHiggsEff,
"No",
"No",
false);
static Switch<OpenLoopsAmplitude,bool> interfaceUseComplMass
("ComplexMassScheme",
"Switch on or off if Complex Masses.",
&OpenLoopsAmplitude::use_cms, true, false, false);
static SwitchOption interfaceUseComplMassYes
(interfaceUseComplMass,
"Yes",
"True for Complex Masses.",
true);
static SwitchOption interfaceUseComplMassNo
(interfaceUseComplMass,
"No",
"False for no Complex Masses.",
false);
static Switch<OpenLoopsAmplitude,bool> interfaceCollier
("UseCollier",
"Switch On/Off for using the Collier Lib (arXiv:1604.06792).",
&OpenLoopsAmplitude::theCollierLib, true, false, false);
static SwitchOption interfaceCollierYes
(interfaceCollier,
"Yes",
"Yes",
true);
static SwitchOption interfaceCollierNo
(interfaceCollier,
"No",
"No",
false);
static Parameter<OpenLoopsAmplitude,int> interfacepsp_tolerance
("PSP_tolerance",
"(Debug)Phase Space Tolerance. Better use e.g.: set OpenLoops:Massless 13",
&OpenLoopsAmplitude::psp_tolerance, 12, 0, 0,
false, false, Interface::lowerlim);
static Parameter<OpenLoopsAmplitude,string> interfaceOpenLoopsLibs
("OpenLoopsLibs",
"The location of OpenLoops libraries",
0, string(OPENLOOPSLIBS),
false, false,
&OpenLoopsAmplitude::setOpenLoopsLibs,
&OpenLoopsAmplitude::getOpenLoopsLibs);
static Parameter<OpenLoopsAmplitude,string> interfaceOpenLoopsPrefix
("OpenLoopsPrefix",
"The location of OpenLoops libraries",
0, string(OPENLOOPSPREFIX),
false, false,
&OpenLoopsAmplitude::setOpenLoopsPrefix,
&OpenLoopsAmplitude::getOpenLoopsPrefix);
}
diff --git a/MatrixElement/Matchbox/Phasespace/FIMassiveInvertedTildeKinematics.cc b/MatrixElement/Matchbox/Phasespace/FIMassiveInvertedTildeKinematics.cc
--- a/MatrixElement/Matchbox/Phasespace/FIMassiveInvertedTildeKinematics.cc
+++ b/MatrixElement/Matchbox/Phasespace/FIMassiveInvertedTildeKinematics.cc
@@ -1,182 +1,182 @@
// -*- C++ -*-
//
// FIMassiveInvertedTildeKinematics.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the FIMassiveInvertedTildeKinematics class.
//
#include "FIMassiveInvertedTildeKinematics.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Utilities/DescribeClass.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
using namespace Herwig;
FIMassiveInvertedTildeKinematics::FIMassiveInvertedTildeKinematics() {}
FIMassiveInvertedTildeKinematics::~FIMassiveInvertedTildeKinematics() {}
IBPtr FIMassiveInvertedTildeKinematics::clone() const {
return new_ptr(*this);
}
IBPtr FIMassiveInvertedTildeKinematics::fullclone() const {
return new_ptr(*this);
}
bool FIMassiveInvertedTildeKinematics::doMap(const double * r) {
if ( ptMax() < ptCut() ) {
jacobian(0.0);
return false;
}
Lorentz5Momentum emitter = bornEmitterMomentum();
Lorentz5Momentum spectator = bornSpectatorMomentum();
double mapping = 1.0;
pair<Energy,double> ptz = generatePtZ(mapping,r);
if ( mapping == 0.0 ) {
jacobian(0.0);
return false;
}
Energy pt = ptz.first;
double z = ptz.second;
Energy2 mi2 = sqr(realEmitterData()->hardProcessMass());
Energy2 m2 = sqr(realEmissionData()->hardProcessMass());
Energy2 Mi2 = sqr(bornEmitterData()->hardProcessMass());
Energy2 scale=2.*emitter*spectator;
double y = (pt*pt+(1.-z)*mi2+z*m2-z*(1.-z)*Mi2) / (z*(1.-z)*scale);
double x = 1./(1.+y);
if ( x < spectatorX() ) {
jacobian(0.0);
return false;
}
// SW 05/12/2016: Checked this is correct
// This should appear to have a factor of 1/x relative
// to the dipole shower jacobian. It is cancelled by ratios of
// real and born cross sections in the units.
mapping /= z*(1.-z);
jacobian(mapping*(sqr(lastScale())/sHat())/(16.*sqr(Constants::pi)));
double phi = 2.*Constants::pi*r[2];
Lorentz5Momentum kt = getKt(spectator,emitter,pt,phi,true);
subtractionParameters().resize(2);
subtractionParameters()[0] = x;
subtractionParameters()[1] = z;
realEmitterMomentum() = z*emitter +
(sqr(pt)+mi2-z*z*Mi2)/(z*scale)*spectator + kt;
realEmissionMomentum() = (1.-z)*emitter +
(pt*pt+m2-sqr(1.-z)*Mi2)/((1.-z)*scale)*spectator - kt;
realSpectatorMomentum() = (1.+y)*spectator;
double mui2 = x*mi2/scale;
double mu2 = x*m2/scale;
double Mui2 = x*Mi2/scale;
double xp = 1. + Mui2 - sqr(sqrt(mui2)+sqrt(mu2));
- double zm = .5*( 1.-x+Mui2+mui2-mui2 -
+ double zm = .5*( 1.-x+Mui2+mui2-mu2 -
sqrt( sqr(1.-x+Mui2-mui2-mu2)-4.*mui2*mu2 ) ) / (1.-x+Mui2);
- double zp = .5*( 1.-x+Mui2+mui2-mui2 +
+ double zp = .5*( 1.-x+Mui2+mui2-mu2 +
sqrt( sqr(1.-x+Mui2-mui2-mu2)-4.*mui2*mu2 ) ) / (1.-x+Mui2);
if ( x > xp || z < zm || z > zp ) {
jacobian(0.0);
return false;
}
realEmitterMomentum().setMass(sqrt(mi2));
realEmitterMomentum().rescaleEnergy();
realEmissionMomentum().setMass(sqrt(m2));
realEmissionMomentum().rescaleEnergy();
realSpectatorMomentum().setMass(ZERO);
realSpectatorMomentum().rescaleEnergy();
return true;
}
Energy FIMassiveInvertedTildeKinematics::lastPt() const {
Energy2 mi2 = sqr(realEmitterData()->hardProcessMass());
Energy2 m2 = sqr(realEmissionData()->hardProcessMass());
Energy2 Mi2 = sqr(bornEmitterData()->hardProcessMass());
Energy2 scale = Mi2 - (realEmitterMomentum()+realEmissionMomentum()-realSpectatorMomentum()).m2();
double x = subtractionParameters()[0];
double z = subtractionParameters()[1];
return sqrt( z*(1.-z)*(1.-x)/x*scale -
((1.-z)*mi2+z*m2-z*(1.-z)*Mi2) );
}
double FIMassiveInvertedTildeKinematics::lastZ() const {
return subtractionParameters()[1];
}
Energy FIMassiveInvertedTildeKinematics::ptMax() const {
Energy2 mi2 = sqr(realEmitterData()->hardProcessMass());
Energy2 m2 = sqr(realEmissionData()->hardProcessMass());
Energy2 Mi2 = sqr(bornEmitterData()->hardProcessMass());
double x = spectatorX();
// s^star/x
Energy2 scale=2.*bornEmitterMomentum()*bornSpectatorMomentum();
Energy2 s = scale * (1.-x)/x + Mi2;
Energy ptmax = .5 * sqrt(s) * rootOfKallen( s/s, mi2/s, m2/s );
return ptmax > 0.*GeV ? ptmax : 0.*GeV;
}
pair<double,double> FIMassiveInvertedTildeKinematics::zBounds(Energy pt, Energy hardPt) const {
hardPt = hardPt == ZERO ? ptMax() : min(hardPt,ptMax());
if(pt>hardPt) return make_pair(0.5,0.5);
Energy2 mi2 = sqr(realEmitterData()->hardProcessMass());
Energy2 m2 = sqr(realEmissionData()->hardProcessMass());
Energy2 Mi2 = sqr(bornEmitterData()->hardProcessMass());
// s^star/x
Energy2 scale=2.*bornEmitterMomentum()*bornSpectatorMomentum();
Energy2 s = scale * (1.-spectatorX())/spectatorX() + Mi2;
double zm = .5*( 1.+(mi2-m2)/s - rootOfKallen(s/s,mi2/s,m2/s) *
sqrt( 1.-sqr(pt/hardPt) ) );
double zp = .5*( 1.+(mi2-m2)/s + rootOfKallen(s/s,mi2/s,m2/s) *
sqrt( 1.-sqr(pt/hardPt) ) );
return make_pair(zm, zp);
}
// If needed, insert default implementations of virtual function defined
// in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs).
void FIMassiveInvertedTildeKinematics::persistentOutput(PersistentOStream &) const {
}
void FIMassiveInvertedTildeKinematics::persistentInput(PersistentIStream &, int) {
}
void FIMassiveInvertedTildeKinematics::Init() {
static ClassDocumentation<FIMassiveInvertedTildeKinematics> documentation
("FIMassiveInvertedTildeKinematics inverts the final-initial tilde "
"kinematics involving a massive particle.");
}
// *** Attention *** The following static variable is needed for the type
// description system in ThePEG. Please check that the template arguments
// are correct (the class and its base class), and that the constructor
// arguments are correct (the class name and the name of the dynamically
// loadable library where the class implementation can be found).
DescribeClass<FIMassiveInvertedTildeKinematics,InvertedTildeKinematics>
describeHerwigFIMassiveInvertedTildeKinematics("Herwig::FIMassiveInvertedTildeKinematics", "Herwig.so");
diff --git a/NEWS b/NEWS
--- a/NEWS
+++ b/NEWS
@@ -1,1644 +1,1667 @@
Herwig News -*- outline -*-
================================================================================
+
+* Herwig 7.1.2 release: 2017-11-01
+
+** Reduction of the default pt cut for QED radiation off leptons.
+
+** Inputfile changes due to new read mode in ThePEG.
+ ThePEG remains in current repo dir when reading input-file/snippet.
+
+** Fix for shower scale variations in qtilde shower.
+
+** All standard input files now use the tuned intrinsic pt.
+
+** Remove obsolete input files for various tunes.
+
+** Fix for Madgraph interface for NLO corrections with recent version.
+
+** Run file size reduction for processes using madgraph/openloops.
+
+** Fix in jacobian for massive dipole kinematics.
+
+** General improvements for UFO model handling.
+
+
* Herwig 7.1.1 release: 2017-07-14
** Snippets are now all installed
** Fixed broken ufo2herwig output and LHC-MB.in
** UFO improvements
*** More robust SLHA file handling
*** option of creating diagonal mixing matrices, needed for ATLAS simplfied models
*** Improved warnings about resetting standard model particles
*** Fixed certain cases where the wrong lorentz structure was picked in VVS vertices
** Improved error message for unhandled beam particles
** Fix for Dipole Shower chain selection
** Fixed crash in double diffractive delta resonances
* Herwig 7.1.0 release: 2017-05-19
** Major new release
For a more detailed overview and further references please see the
release note arXiv:1705.06919
** NLO multijet merging with the dipole shower
** A new soft model
** An interface to EvtGen
** Improved calculation of mass effects in the dipole shower
** Top decays in the dipole shower, and NLO corrections to the decay
** An implementation of the KrkNLO method for simple processes
** Major restructuring and cleanup of default input files
** C++11 is now mandatory and heavily used in the code
** Many smaller bugfixes and improvements
* Herwig 7.0.4 release: 2016-10-24
** API
The high level API is now properly available as a library, providing an
alternative to the Herwig main program.
** Dipole shower
Added nloops() function to the AlphaS classes to return the number of loops
in the running coupling
** Matchbox
Improved error handling and clearer messages
** BSM models
Initialize W mass correctly from SLHA file. Improved reading in of decay
modes if they already exist.
** Sampling
Introduced option to reduce reference weight in AlmostUnweighted mode by
Kappa factor. Useful for processes where full unweighting is infeasible.
** Qtilde shower
Better control of scale in splitting functions using the
SplittingFunction:ScaleChoice interface.
** Tests
New NLO fixed-order input files for testing Matchbox in Tests/ExternNLO.
** Input files
Set diagonal CKM options consistently. Added TauTauHVertex and MuMuHVertex
to MatchboxDefaults.
* Herwig 7.0.3 release: 2016-07-21
** subprocess generation filters
A number of filters has been implemented to speed up process and diagram
generation for the case of Standard Model like processes; this is
particularly helpful for processes involving a large number of electroweak
combinatorics. See the documentation for more details.
** fix to directory hierarchy
A bug in the Herwig-scratch directory hierarchy when integrating with
different seeds has been fixed.
** fix for relocating MadGraph generated amplitudes
The directory and symbolic link structure for MadGraph-built amplitudes has
been changed to allow for relocation of a run directory to a different file
system hierarchy.
** z* variable added to LeptonsJetsAnalysis
The builtin LeptonsJetsAnalysis has been extented to include the normalized
relative rapidity z*
** detuning parameter for shower reweighting
An efficiency tweak when using the shower reweighting facilities has been
introduced for the veto algorithms in both the QTilde and the Dipole
shower. See the documentation for more details.
** BaryonThreeQuarkModelFormFactor
A scaling bug in the form factor series expansion was fixed.
* Herwig 7.0.2 release: 2016-04-29
** Event reweighting
New option of calculating the weights for the effect of varying the scale
used in both the default and dipole showers. The method is described in
arXiv:1605.08256
** mergegrids mode
A main mode for the Herwig executable has been added which merges the
integration grids from parallel runs.
** NLO Diphoton production
The NLO matrix elements in the POWHEG approach for diphoton production as
described in JHEP 1202 (2012) 130, arXiv:1106.3939 have been included as
MEPP2GammaGammaPowheg.
** BSM Hard process constructor
A missing Feynman diagram with a t-channel vector boson has been added to
the matrix element for vv2ss
** BSM Decay Modes calculation
The behaviour of the option to disable decay modes in BSM Models has been
changed so that the partial width for the ignored modes is now calculated
and included in the total width, but the branching ratio is set to
zero. This is more physical than the previous option where the mode was
t otally ignored and hence not included in the calculation of the width.
** Mass Generation
The behaviour of the GenericMassGenerator has been changed so that modes
which have been disabled are only included in the calculation of the total
width and not in the partial width used in the numerator of the weight used
to select the off-shell mass.
** Boost detection
Boost could not detect the compiler version for gcc-5.3 and gcc-6.1
* Herwig 7.0.1 release: 2016-01-17
** Version number written to log file
The Herwig version number is now included in addition to ThePEG's version.
** Tau lifetimes
A bug with lifetimes for hard process Taus is fixed. Thanks to ATLAS
for the report!
** Shower FSR retries
Rare events could take a long time due to an extremely large number
of FSR retries. These are now capped at a configurable number.
** Dipole shower
Reweighting for non-radiating events; fixes for shower profile
handling; option to downgrade large-Q expansion for alphaS
** Matchbox builtins
Added massive currents for q-qbar
** ShowerAlphaQCD
can now use user-defined thresholds
** Input snippets
W/Z/H on-shell now split into three files; 4-flavour scheme added
** UFO converter
The converter now has experimental support for writing out param
cards of its current settings.
** LEPJetAnalysis loading fixed
** Contrib
HJets++ has moved to a stand-alone project, FxFx has been added
* Herwig 7.0.0 (Herwig++ 3.0.0) release: 2015-12-04
** Major new release
A major new release of the Monte Carlo event generator Herwig++ (version
3.0) is now available. This release marks the end of distinguishing
Herwig++ and HERWIG development and therefore constitutes the first major
release of version 7 of the Herwig event generator family. The new version
features a number of significant improvements to the event simulation,
including: built-in NLO hard process calculation for all Standard Model
processes, with matching to both angular ordered and dipole shower modules
via variants of both subtractive (MC@NLO-type) and multiplicative
(Powheg-type) algorithms; QED radiation and spin correlations in the
angular ordered shower; a consistent treatment of perturbative
uncertainties within the hard process and parton showering, as well as a
vastly improved documentation. This version includes (for a more detailed
overview and further references please see the release note
arXiv:1512.01178):
** A long list of improvements and fixes for the Matchbox module
*** includes MC@NLO and Powheg matching to both showers with truncated showering
** A long list of improvements and fixes for both of the shower modules
*** includes improvements of numerics issues relevant to 100 TeV pp collisions
** NLO event simulation and Matchbox development
*** Interfaces to a number of external libraries
*** A new workflow for event generation
*** Electroweak corrections to VV production
** Parton shower development
*** QED radiation in the angular ordered shower
*** Spin correlations in the angular ordered shower
*** New scale choices in gluon branchings
** Improvements to event generation workflow
*** Re-organized and streamlined input files for the new NLO development
*** A unified treatment of shower and matching uncertainties
*** New integrator modules featuring parallel integration
** New default tunes for both shower modules
** New contrib modules
*** Electroweak Higgs plus jets production
*** FxFx merging support
*** Higgs boson pair production
* Herwig++-2.7.1 release: 2014-07-07
** New shower switches to select schemes for momentum reconstruction
*** QTildeReconstructor:FinalStateReconOption
has the following options:
*** Default
All momenta are rescaled in the rest frame.
*** MostOffShell
Put all particles on the new-mass shell and the most off-shell and
recoiling system are rescaled to ensure 4-momentum is conserved.
*** Recursive
Recursively put the most off-shell particle which hasn't yet been
rescaled on-shell by rescaling the particles and the recoiling
system.
*** RestMostOffShell
The most off-shell is put on shell by rescaling it and the
recoiling system, the recoiling system is then put on-shell in its
rest frame.
*** RestRecursive
As above, but recursively treat the currently most-off shell
(only makes a difference for more than 3 partons)
** Ticket #378: Hadronization of baryon number violating clusters involving diquarks
Fixed by only considering non-diquarks to be combined in the
ClusterFinder.
** UFO converter can now parse SLHA files for parameter settings
The UFO converter code can now use SLHA files for modifying
parameters. The first pass "ufo2herwig" produces the model to be
compiled. For each parameter card, run "slha2herwig" to get the
matching input file.
** Fix for systems using lib64
The repository is now initialized correctly on systems using lib64
as the library location.
** Efficiency optimization
Better allocation of internal vector variables for a noticeable
speed increase of 10-20% with LHC events.
* Herwig++-2.7.0 release: 2013-10-28
** UFO interface to Feynman rules generators
Herwig++ now includes "ufo2herwig", a tool that automatically
creates all required files to run a BSM model from a UFO
directory. The conversion has been extensively tested against
Feynrules models MSSM, NMSSM, RS, Technicolor,
and less extensively with most of the
other models in the Feynrules model database.
We expect that following this release there will be no further
hard-coded new physics models added to Herwig++ and that future
models will be included using the UFO interface.
** Shower uncertainties
A first set of scaling parameters to estimate shower uncertainties
is provided for both the angular ordered as well as the dipole
shower; they are Evolver:HardScaleFactor and ShowerAlphaQCD:
RenormalizationScaleFactor.
** Rewrite of Matchbox NLO matching
The NLO matching implementation has been rewritten and is now more
flexible and consistent. Profile scales are provided for the
hardest emission both for the dipole shower and matrix element
correction matching.
** BLHA2 Interface and new processes
Matchbox now features a generic BLHA2 interface to one-loop
amplitude codes and now also includes W and W+jet production as
well as Higss production in gluon fusion as builtin processes.
** Impoved dipole shower kinematics parametrization
The kinematics parametrization for emissions in the dipole shower
has been made more efficient.
** W and Z Powheg decays
Decays of W and Z bosons now use the Powheg decayers by default.
** Improved treatment of beam remnants
The handling of beam remnants has been improved in multiple
contexts, leading to a much lower error rate at p+/p- collisions.
An additional value "VeryHard" for ClusterFissioner:RemnantOption
can be used to disable any special treatment of beam remnant
clusters.
** New underlying event tune
Herwig++ now uses tune UE-EE-5-MRST by default. Other related tunes
can be obtained from the Herwig++ tunes page
** Improvements in BSM code
The UFO development identified many sign fixes in rarely used BSM
vertices; many improvements were made to general decayers, allowing
four-body decays in BSM for the first time; Powheg is enabled in
General two-body decayers; and the handling of colour
sextets has been improved.
** A new HiggsPair matrix element in Contrib.
** A new matrix element for single top production.
** The Higgs mass is now set to 125.9 GeV (from PDG 2013 update).
** C++-11 testing
To help with the coming transition to C++-11, we provide the new
--enable-stdcxx11 configure flag. Please try to test builds with
this flag enabled and let us know any problems, but do not use this
in production code yet. In future releases, this flag will be on by
default.
** Other changes
*** Many new Rivet analyses have been included in the Tests directory.
*** Cleaned Shower header structure; grouped shower parameters into one struct.
*** The boolean Powheg flag in HwMEBase changed to an enumeration.
* Herwig++-2.6.3 release: 2013-02-22
** Decay vertex positioning in HepMC output
Pseudo-vertices that Herwig++ inserts for technical reasons will
now not contribute to the Lorentz positions of downstream vertices.
Thanks to ATLAS for the bug report!
** Updated Rivet tests
Herwig's library of Rivet test runs has been brought up-to-date
with new analyses that were recently published by the Rivet
collaboration.
* Herwig++-2.6.2 release: 2013-01-30
** Fixes for PDF and scale choices in POWHEG events
Scale settings for MPI and the regular shower are now correct in
POWHEG events. This should fix reported anomalies in POWHEG jet rates.
NLO PDFs are now also set consistently in the example input files.
** Ticket #373: Branching ratio factors in cross-section
If any decay modes are selectively disabled, setting the following
post-handler will cause all reported cross-sections to include the
branching ratio factor(s) from the previous stages correctly:
create Herwig::BranchingRatioReweighter BRreweight
insert LHCGenerator:EventHandler:PostDecayHandlers 0 BRreweight
** Anomalous vertices now possible in MEfftoVH
** Interactive shell does not quit on error
** Better warning messages for events from inconsistent LHEF files
** Possible division by zero error fixed in BSM branching ratio calculations
** Decayer and ME changes to improve checkpointing
The checkpointing changes in ThePEG 1.8.2 are implemented here, too. Regular
dump files are consistent now.
* Herwig++-2.6.1 release: 2012-10-16
** Configure switches
The various switches to turn off compilation of BSM models have
been unified into a single '--disable-models'. A new flag
'--disable-dipole' can be used to turn off the compilation of the
Dipole and Matchbox codes.
** Ticket #348: Search path for repository 'read' command
The search path for the 'read' command is configurable on the
command line with the -i and -I switches. By default, the
installation location is now included in the search path, so that
'Herwig++ read LEP.in' will work in an empty directory. The current
working directory will always be searched first.
The rarely used "Herwig++ init" command has been made consistent
with 'read' and 'run' and should now be used without the '-i' flag.
** Width treatment in BSM
The width treatment in BSM decay chains has been greatly improved
and is now switched on by default in the .model files. To get the
old behaviour, use
set /Herwig/NewPhysics/NewModel:WhichOffshell Selected
** New BSM models
Little Higgs models with and without T-parity are now available.
** Resonance photon lifetime
A lifetime bug affecting decays of pi0 to e+e-X was fixed. The
virtual photon is not part of the event record anymore.
** Ticket #371: Hard diffraction FPE
Herwig++ 2.6.0 introduced a bug into the diffraction code which
would abort any runs. This is now fixed.
** O2AlphaS
Support for setting quark masses different from the particle data
objects as introduced in ThePEG 1.8.1 has been enabled.
** Matchbox
Several improvements and bug fixes are included for
Matchbox. Amplitudes relevant to pp -> Z+jet and crossed processes
at NLO are now available, and various scale choices have been added
in a more flexible way. All subtraction dipoles for massive quarks
are now included.
** Dipole shower
Parameters to perform scale variations in the shower have been
added to estimate uncertainties. A bug in showering off gg -> h has
been fixed.
** Minor fixes
*** Two broken colour structures in GeneralHardME
*** Susy Higgs mixing matrix
*** BaryonFactorizedDecayer out-of-bounds access
*** Mass values in SimpleLHCAnalysis
* Herwig++-2.6.0 release: 2012-05-21 (tagged at SVN r7407)
** New NLO framework
Matchbox, a flexible and very general framework for performing NLO
calculations at fixed order or matched to parton showers is
provided with this release.
** Dipole shower algorithm
A first implementation of the coherent dipole shower algorithm by
Plätzer and Gieseke (arXiv:0909.5593 and arXiv:1109.6256) is
available.
** Alternative samplers and the ExSample library
The ExSample library by Plätzer (arXiv:1108.6182) is shipped along
with Herwig++ in an extended version. The extended version provides
SamplerBase objects which can be used alternatively to the default
ACDCSampler.
** New BSM models
*** New colour sextet diquark model
A colour sextet diquark model has been included, as described in
Richardson and Winn (arXiv:1108.6154).
*** Models reproducing the CDF t-tbar asymmetry
Four models that can reproduce the reported t-tbar asymmetry have
been included.
*** Zprime
A simple standard model extension by one additional heavy neutral
vector boson.
** Interface to AlpGen, with MLM merging
The Contrib directory contains a new interface to the AlpGen matrix
element generator. AlpGen events must be preprocessed with the
provided AlpGenToLH.exe tool before they can be used. More
information can be found in the Herwig++ 2.6 release note.
** HiggsVBF Powheg
Higgs boson production by vector boson fusion is available at NLO
in the POWHEG scheme, as described in d'Errico, Richardson
(arXiv:1106.2983). The Powheg DIS processes were available in
Herwig++-2.5.2 already.
** Statistical colour reconnection
Alternative mechanisms to minimize the colour length Sum(m_clu)
before the hadronization stage, based on Metropolis and annealing
algorithms.
** Energy extrapolation of underlying-event tunes
To describe underlying-event data at different c.m. energies, the
energy-dependent parameter pT_min will now be adjusted
automatically, following a power-law. The new tune parameters are
the value at 7000 GeV "MPIHandler:pTmin0", and MPIHandler:Power.
** Ticket #239: Reporting of minimum-bias cross-section
When simulating minimum-bias events using the MEMinBias matrix
element, the correct unitarized cross section can now be reported
via the standard facilities; it is no longer necessary to extract
it from the .log file of the run. The corresponding functionality
is enabled by inserting a MPIXSecReweighter object as a
post-subprocess handler:
create Herwig::MPIXSecReweighter MPIXSecReweighter
insert LHCHandler:PostSubProcessHandlers 0 MPIXSecReweighter
** Dependency on 'boost'
Herwig++ now requires the boost headers to build; if not detected
in standard locations, specify with the --with-boost configure
option.
** Tests directory
The Tests directory now contains input cards for almost all Rivet
analyses. A full comparison run can be initiated with 'make tests'.
** Minor changes
*** Default LHC energy now 8 TeV
All LHC-based defaults have now been updated to use 8 TeV as the
center-of-mass energy.
*** Herwig::ExtraParticleID -> ThePEG::ParticleID
The namespace for additional particles has been unified into
ThePEG::ParticleID
*** MEee2VectorMeson
The e+e- -> vector meson matrix element has moved from Contrib into
HwMELepton.so
*** SUSY numerics fixes
Better handling of rare numerical instabilities.
*** YODA output for Rivet
The built-in histogramming handler can now output data in the YODA
format used by Rivet.
*** Consistency checks in SLHA file reader
Better warnings for inconsistent SusyLHA files
*** better colour flow checking for development
** Bug fixes
*** Extremely offshell W from top decay
Numerical improvements for very off-shell W bosons coming from top
decays.
*** Ticket #367: problems in using SUSY + LHE
Susy events from Les Houches event files are now handled better.
*** Infinite loop in remnant decayer
The remnant decayer will now abort after 100 tries.
*** Fix to HiggsVBF LO diagrams
The diagram structure of HiggsVBF LO matrix elements has been fixed.
*** LEP thrust fix
The calculation of the transverse momentum of a branching from the
evolution variable in final-state radiation can now be
changed. While formally a sub-leading choice this enables a better
description of the thrust distribution in e+e- collisions at
small values of the thrust. Currently the default behaviour, where
the cut-off masses are used in the calculation, remains the same
as previous versions.
* Herwig++-2.5.2 release: 2011-11-01 (tagged at SVN r6928)
** Optional new jet vetoing model
The jet vetoing model by Schofield and Seymour (arXiv:1103.4811) is
available via Evolver:ColourEvolutionMethod,
PartnerFinder:PartnerMethod and SplittingFunction:SplittingColourMethod.
The default behaviour is unchanged.
** MPI tune
Version 3 of the MPI tunes is now the default. Please note that the
pT parameter is energy-dependent and needs to be modified when an
LHC run is not at 7 TeV.
The latest tunes are always available at
http://projects.hepforge.org/herwig/trac/wiki/MB_UE_tunes
** MPI PDFs
MPI PDFs can now be controlled independently.
** Initialization time speedup
A new BSMModel base class was introduced between StandardModel and
the BSM model classes. Together with a restructured decay mode
initialization, this offers significantly faster startup times for
BSM runs. ThreeBodyDecays can now always be switched on without a
large speed penalty.
** Decay mode file
Decay mode files in the SLHA format can now be read separately in
any BSM model with 'set Model:DecayFileName filename'
** Powheg DIS
Charged- and neutral-current DIS processes implementing the POWHEG
method are now available.
** Diffraction models
Xi cut implemented in PomeronFlux
** Ticket #352: Colour reconnection fixed in DIS
** Ticket #353: Improved numerical stability in chargino decays
** Ticket #358: Infinite loop in top events with pT cut in shower
** Ticket #361: Problem with duplicate 2-body modes in BSM
** Tickets #362 / #363: Crashes with baryon number violating models
Particle decays in SUSY models with RPV now work correctly in the
colour 8 -> 3,3,3 case. Colour reshuffling now works for RPV
clusters.
** Improved Fastjet detection
The configure step uses fastjet-config to make sure all header file
paths are seen.
** Darwin 11 / OS X Lion
A configure bug was fixed which prevented 'make check' from
succeeding on OS X Lion.
** Vertex classes
The specification of QED / QCD orders has been moved to the vertex
constructors, to allow ThePEG consistency checks. WWHH vertices in
MSSM and NMSSM were fixed. Some Leptoquark and UED vertices fixed.
** Hadronization
Cleanup of obsolete code.
* Herwig++-2.5.1 release: 2011-06-24 (tagged at SVN r6609)
** Example input files at 7 TeV
All our example input files for LHC now have their beam energy set
to 7 TeV instead of 14 TeV.
** Colour reconnection on by default
The colour reconnection tunes are now the default setup. Version 2
of the tunes replaces the *-1 tunes, which had a problem with LEP
event shapes.
** Run name tags
Aded possibility to add a tag to the run name when running with the
'-t' option. One run file can thus be run with different seeds and
results stored in different output files.
** Floating point exceptions
The new command line option -D enables floating point error checking.
** General improvements to WeakCurrent decays
** Remnant decayer
Hardwired gluon mass was removed.
** WeakCurrentDecayConstructor
Instead of specifying separate Particle1...Particle5 vectors for
the decay modes, the new interface DecayModes can be filled with
decay tags in the standard syntax.
** BSM: improvements to handling of vertex and model initialisation
** Powheg Higgs
Option to use pT or mT as the scale in alphaS and for the
factorization scale in the PDFs
** Ticket #337: Tau polarization wrong in charged Higgs decay
** Ticket #339: Colour flows in GeneralThreeBody Decayers for 3bar -> 8 3bar 1
** Ticket #340: Crash for resonant zero-width particles
** Ticket #341: Varying scale for BSM processes
The scale used is now ResonantProcessConstructor:ScaleFactor or
TwoToTwoProcessConstructor:ScaleFactor multiplied by sHat.
** Ticket #346: Chargino decays
Chargino decayers now automatically switch between the mesonic
decays for mass differences less than 2 GeV and the normal partonic
decays above 2 GeV.
** Ticket #349: Stop by default on input file errors
The '--exitonerror' flag is now the default behaviour for the
Herwig++ binary. To switch back to the old behaviour,
'--noexitonerror' is required.
** Ticket #351: Four-body stop decays
** Tested with gcc-4.6
* Herwig++-2.5.0 release: 2011-02-08 (tagged at SVN r6274)
** Uses ThePEG-1.7.0
Herwig++ 2.5.0 requires ThePEG 1.7.0 to benefit from various
improvements, particularly: handling of diffractive processes;
respecting LD_LIBRARY_PATH when loading dynamic libraries,
including LHAPDF; improvements to repository commands for decay
modes. See ThePEG's NEWS file for more details.
** POWHEG improvements
*** New POWHEG processes
Simulation at NLO accuracy using the POWHEG method is now
available for hadronic diboson production (pp to WW,WZ,ZZ), Higgs
decays to heavy quarks, and e+e- to two jets or ttbar, including
full mass dependence.
*** Input file changes
The input files for setting up POWHEG process simulation have been
simplified. See the example files LHC-Powheg.in and TVT-Powheg.in
for the improved command list.
*** Structural changes
The POWHEG backend in the shower code has been restructured to
make future additions easier: PowhegEvolver has merged with
Evolver; both the matrix element corrections and real corrections
in the POWHEG scheme are implemented directly in the ME or Decayer
classes.
** New processes at leading order
*** Photon initiated processes
We have added a matrix element for dijet production in gamma
hadron collisions.
*** Bottom and charm in heavy quark ME
The option of bottom and charm quarks is now supported for heavy
quark production in MEHeavyQuark.
** Colour reconnection
The cluster hadronization model has been extended by an option to
reconnect coloured constituents between clusters with a given
probability. This new model is different from the colour
reconnection model used in FORTRAN HERWIG, and improves the
description of minimum bias and underlying event data.
** Diffractive Processes
Both single and double diffractive processes are now supported in
Herwig++. The Pomeron PDF is implemented using a fit to HERA data,
and a pion PDF can be used to model reggeon flux.
** BSM physics
*** New models
We have added new BSM models, particularly ADD-type extra
dimension models and the next-to-minimal supersymmetric standard
model (NMSSM). Effects of leptoquarks can as well be simulated.
*** Vertex additions
We have added flavour changing stop interactions (stop -
neutralino - charm) and gravitino interactions with particular
emphasis on numerical stability for very light gravitinos.
Tri-linear Higgs and Higgs-Higgs/Vector-Vector four-vertices are
available as well.
*** Input file changes
The SUSY model can now also extract the SLHA information from the
header of a Les Houches event file: replace the SLHA file name
in the example input files with the LH file name.
*** Structure
The backend structure of the HardProcessConstructor has changed,
to allow easier inclusion of new process constructors. Some 2->3
BSM scattering processes involving neutral higgs bosons are now
included. The spin handling has been improved in the background.
** Shower splitting code reorganized
The selection of spin structures has been decoupled from the choice
of colour structure. This gives more flexibility in implementing
new splittings. Selected splittings can be disabled in the input
files.
** B mixing
B mixing, and indirect CP violation in the B meson system are
included now.
** Looptools
The Looptools directory has been updated to reflect T.Hahn's
Looptools 2.6.
** Contrib changes
The ROOT interface has been removed as deprecated. The MCPWNLO code
has temporarily been removed from the Contrib directory as a major
review of this code is required. Additionally, there are various
fixes to all other codes shipped in Contrib.
** DIS improvements
The momentum reshuffling in DIS events has been improved.
** mu and nu beams
mu, nu_e and nu_mu and their antiparticles are now available as
beam particles. They are all supported in the DIS matrix
elements. mu+ mu- collisions are supported in the general
matrix element code for BSM models, but not yet in the hard-coded
matrix elements for lepton-lepton scattering.
** Structural changes
*** Inline code
Inline code has been merged into the header files, .icc files were
removed.
*** Silent build
By default, Herwig++ now builds with silent build rules. To get
the old behaviour, run 'make V=1'.
*** Debug level
The debug level on the command line will now always have priority.
*** Event counter
The event counter has been simplified.
*** Interpolator persistency
Interpolators can now be written persistently.
** Ticket #307: Momentum violation check in BasicConsistency
Added parameters AbsoluteMomentumTolerance and
RelativeMomentumTolerance
** Example POWHEG input files
The example input files for Powheg processes now set the NLO
alpha_S correctly, and are run as part of 'make check'.
** Truncated shower
A problem which lead to the truncated shower not being applied in
some cases has been fixed.
** Fixes to numerical problems
Minor problems with values close to zero were fixed in several
locations.
** Remove duplicated calculation of event shapes
An accidental duplication in the calculation of event shapes was
removed, they are now only calculated once per event. Several other
minor issues in the event shape calculations have also been fixed.
** MRST PDFs fixed
An initialization problem in the internal MRST PDFs was fixed.
** Vertex scale choice
The scale in the Vertex classes can now be zero where
possible.
** Treatment of -N flag
The Herwig++ main program now correctly treats the -N flag
as optional.
** Numerical stability improved
The numerical stability in the 'RunningMass' and
'QTildeReconstructor' classes has been improved. The
stability of the boosts in the SOPTHY code for the
simulation of QED radiation has been improved.
The accuracy of boosts in the z-direction has been improved to
fix problems with extremely high p_T partons.
** Bugfix in initial state splittings
A bug in the implementation of the PDF weight in initial-state
qbar -> qbar g splittings has been fixed.
** Bugfix in chargino neutralino vertices
A bug in the 'chi+- chi0 W-+' and charged
Higgs-sfermions vertices has been fixed.
** Remove uninitialized variables written to repository
A number of uninitialised variables which were written to the
repository have been initialised to zero to avoid problems on some
systems.
** Fix to QED radiation in hadronic collisions
The longitudinal boost of the centre-of-mass frame in hadronic
collisions is correctly accounted for now in the generation of QED
radiation.
** Fix to numerical problems in two-body decays
Numerical problems have been fixed, which appeared in the rare case
that the three-momenta of the decay products in two-body decays are
zero in the rest frame of the decay particle.
** A problem with forced splittings in the Remnant was fixed.
** ME correction for W+- decays applied properly
The matrix element correction for QCD radiation in W+- decays
which was not being applied is now correctly used.
** Top quark decays from SLHA file
The presence of top quark decay modes in SLHA files is now handled
correctly.
** Exceptional shower reconstruction kinematics
Additional protection against problems due to the shower
reconstruction leading to partons with x>1 has been added.
** Ordering of particles in BSM processes
Changes have been made to allow arbitrary ordering of the outgoing
particles in BSM processes.
** Bugfixes in tau decays
Two bugs involving tau decays have been fixed. The wrong masses
were used in the 'KPiCurrent' class for the scalar form factors
and a mistake in the selection of decay products lead to
tau- --> pi0 K- being generated instead of tau- --> eta K-.
** Avoid crashes in baryon number violating processes.
To avoid crashes, better protection has been introduced for the
case where diquarks cannot be formed from the quarks in a
baryon-number violating process. In addition, the parents of the
baryon-number violating clusters have been changed to avoid
problems with the conversion of the events to HepMC.
** QED radiation in W- decays
A bug in the 'QEDRadiationHandler' class which resulted
in no QED radiation being generated in W- decays has been fixed.
** A number of minor fixes to the SUSY models have been made.
** Partial width calculations in BSM models
A fix for the direction of the incoming particle in the calculation
of two-body partial widths in BSM models has been made.
** LoopTools improvements
The LoopTools cache is now cleared more frequently to
reduce the amount of memory used by the particle.
** Negative gluino masses are now correctly handled.
** A problem with mixing matrices which are not square has been fixed.
** Removed duplicate diagram
The 'MEee2gZ2ll' class has been fixed to only include the
photon exchange diagram once rather than twice as previously.
** Fix for duplicate particles in DecayConstructor
A problem has been fixed which occurred if the same particle was
included in the list of DecayConstructor:DecayParticles.
** Fixes for UED model vertices
A number of minor problems in the vertices for the UED model have
been fixed.
** Include missing symmetry factor
The missing identical-particle symmetry factor in
'MEPP2GammaGamma' has been included.
** Fix floating point problem in top decays
A floating point problem in the matrix element correction for top
decays has been fixed.
* Herwig++-2.4.2 release: 2009-12-11 (tagged at SVN r5022)
** Ticket #292: Tau decay numerical instability
The momentum assignment in tau decays contained numerical
instabilities which have been fixed by postponing the tau decay
until after the parton shower. A new interface setting
DecayHandler:Excluded is available to prevent decays in the shower
step. This is enabled by default for tau only.
** Ticket #290: Missing MSSM colour structure
The missing colour structure for gluino -> gluon neutralino was added.
** Ticket #294: Zero momentum in some decays
Some rare phase space points lead to zero momentum in two-body
decays. This has been fixed.
** Ticket #295: Stability of QED radiation for lepton collider processes
The numerical stability of QED radiation momenta was improved
further.
** Ticket #296: K0 oscillation vertex was wrong
The oscillation from K0 to K0_L/S now takes place at the production
vertex of K0.
** Ticket #289: Undefined variables in repository
On some system configurations, undefined variables were written to
the repository. These have been fixed.
** Fixed QED radiation for hadron processes
The longitudinal boost of the centre-of-mass frame in hadronic
collisions is correctly accounted for now.
** Numerical stability fixes
Small fixes in RunningMass and QTildeReconstructor.
** Powheg example input files
The example input files for Powheg processes now set the NLO
alpha_S correctly, and are run as part of 'make check'.
** OS X builds for Snow Leopard
Snow Leopard machines will now be recognized as a 64bit
architecture.
* Herwig++-2.4.1 release: 2009-11-19 (tagged at SVN r4932)
** Uses ThePEG-1.6.0
Herwig++ now requires ThePEG-1.6.0 to benefit from the improved
helicity code there. If you have self-written vertex classes, see
ThePEG's NEWS file for conversion instructions.
** Vertex improvements
ThePEG's new helicity code allowed major simplification of the vertex
implementations for all Standard Model and BSM physics models.
** New Transplanckian scattering model
An example configuration is in LHC-TRP.in
** BSM ModelGenerator as branching ratio calculator
The BSM ModelGenerator has a new switch to output the branching
ratios for a given SLHA file in SLHA format, which can then be used
elsewhere.
** BSM debugging: HardProcessConstructor
New interface 'Excluded' to exclude certain particles from
intermediate lines.
** Chargino-Neutralino-W vertex fixed
** Spin correlations
are now switched on by default for all perturbative decays.
** Ticket #276: Scale choice in BSM models' HardProcessConstructor
New interface 'ScaleChoice' to choose process scale between
- sHat (default for colour neutral intermediates) and
- transverse mass (default for all other processes).
** Ticket #287: Powheg process scale choice
The default choice is now the mass of the colour-singlet system.
** Ticket #278: QED radiation for BSM
Soft QED radiation is now enabled in BSM decays and all
perturbative decays by default.
** Ticket #279: Full 1-loop QED radiation for Z decays
Soft QED radiation in Z decays is now fully 1-loop by default.
** Ticket #280: Redirect all files to stdout
This is now implemented globally. The files previously ending in
-UE.out and -BSMinfo.out are now appended to the log file. They now
also obey the EventGenerator:UseStdout flag.
** Ticket #270: LaTeX output updated
After each run, a LaTeX file is produced that contains the full
list of citations. Please include the relevant ones in publications.
** Ticket #256: Mac OS X problems
An initialization problem that affected only some configurations has
been identified and fixed.
** Tests directory added
This contains many .in files, to exercise most matrix
elements.
** Minor fixes
*** Prevent rare x>1 partons in shower reconstruction.
*** SUSY-LHA parameter EXTPAR can be used to set tan beta
*** Improved Fastjet detection at configure time
* Herwig++-2.4.0 release: 2009-09-01 (tagged at SVN r4616)
** New matrix elements
We have added a built-in implementation of several new matrix elements:
PP --> WW / WZ / ZZ
PP --> W gamma / Z gamma
PP --> VBF Higgs
PP --> Higgs tt / Higgs bb
e+e- --> WW / ZZ
gamma gamma --> ff / WW
** Base code improvements
*** Ticket #257: Remnant handling
A problem with forced splittings in the Remnant was fixed.
*** Ticket #264: Soft matrix element correction
A problem with emissions form antiquarks was fixed.
** PDF sets
*** New default set
MRST LO** is the new default PDF set. LO* is also available built-in.
*** Shower PDFs can be set separately from the hard process
Use the 'ShowerHandler:PDF' interface.
** Parameter tunes
Shower, hadronization and underlying event parameters were retuned
against LEP and Tevatron data respectively.
** BSM module improvements
*** Ticket #259: read error for some UED models
Arbitrary ordering of outgoing lines in the process description is now
possible.
*** Ticket #266: branching ratio sums
The warning threshold for branching ratios not summing to 1 has
been relaxed. It is now a user interface parameter.
*** Ticket #267: Top decay modes
Top decay modes listed in SLHA files are now handled correctly.
** QED radiation
*** Ticket #241: Soft QED radiation is now enabled by default
*** Ticket #265: Radiation off W+ and W- is now handled correctly
** Interfaces
*** Ticket #243: Fastjet
Fastjet is now the only supported jet finder code. All example
analyses have been converted to use Fastjet.
*** KtJet and CLHEP interfaces have been removed.
*** New interfaces to AcerDet and PGS available in Contrib
*** MCPWnlo distributed in Contrib
*** HepMC and Rivet interfaces moved to ThePEG
** Ticket #239: Inelastic cross-section for MinBias
This information is now available in the ...-UE.out files.
** Technical changes
*** Ticket #186
Configure now looks for ThePEG in the --prefix location first.
*** Configure information
Important configuration information is listed at the end of the
'configure' run and in the file 'config.thepeg'. Please provide
this file in any bug reports.
*** New ZERO object
The ZERO object can be used to set any dimensionful quantity to
zero. This avoids explicit constructs like 0.0*GeV.
*** Exception specifiers removed
Client code changes are needed in doinit() etc., simply remove the
exception specifier after the function name.
*** Ticket #263: Tau polarizations can be forced in TauDecayer
* Herwig++-2.3.2 release: 2009-05-08 (tagged at SVN r4249)
** SUSY enhancements
*** Ticket #245: Select inclusive / exclusive production
Using the new 'HardProcessConstructor:Processes' switch options
'SingleParticleInclusive', 'TwoParticleInclusive' or 'Exclusive'
*** Improved three-body decay generation
Several problems were fixed, incl. tickets #249 #250 #251
Thanks to J.Tattersall and K.Rolbiecki for the stress-testing!
*** Looptools fix
Release 2.3.1 had broken the Looptools initialization.
*** Improved warning message texts
** Ticket #237:
Values of q2last can now be zero where possible.
** Ticket #240:
The Herwig++ main program now correctly treats the -N flag as optional.
** Ticket #246:
Extreme pT partons fixed by improving accuracy of z boosts.
** DIS
Improved parton shower momentum reshuffling.
** Minimum Bias events
The zero-momentum interacting particle used for
bookkeeping is now labelled as a pomeron.
** User Makefile
Makefile-UserModules does not enable -pedantic anymore. User's ROOT
code will not compile otherwise.
** Build system
Small fixes in the build system.
* Herwig++-2.3.1 release: 2009-03-31 (tagged at SVN r4140)
** Initial state showers
The PDF veto was wrongly applied to qbar->qbar g splittings.
** User interaction
The Makefile-UserModules now includes the Herwig version number.
The -N flag to 'Herwig++ run' is optional now, as was always intended.
** Contrib
The contrib directory is now included in the tarball. The omission
was accidental.
** Numerical accuracy
Minor problems with values close to zero were fixed in several
locations.
** LEP event shapes
An accidental duplication was removed, they are now only calculated
once per event.
** MRST PDF code
Initialization problem fixed.
** Mac OS X
The configure script was improved to detect libraries better.
** Libtool
Updated to version 2.2.6
* Herwig++-2.3.0 release: 2008-12-02 (tagged at SVN r3939)
** Major release, with many new features and bug fixes
** Extension to lepton-hadron collisions
** Inclusion of several processes accurate at next-to-leading order
in the POsitive Weight Hardest Emission Generator (POWHEG) scheme
** Inclusion of three-body decays and finite-width effects
in BSM processes
** New procedure for reconstructing kinematics of the parton shower
based on the colour structure of the hard scattering process
** New model for baryon decays including excited baryon multiplets
** Addition of a soft component to the multiple scattering model
of the underlying event and the option to choose more than one hard
scattering explicitly
** New matrix elements for DIS and e+e- processes
** New /Contrib directory added
containing external modules that will hopefully be of use to some
users but are not expected to be needed by most users and are not
supported at the same level as the main Herwig++ code
** Minor changes to improve the physics simulation:
*** IncomingPhotonEvolver added
to allow the simulation of partonic processes with incoming photons
in hadron collisions
*** KTRapidityCut added
to allow cuts on the p_T and rapidity, rather than just the p_T and
pseudorapidity used in SimpleKTCut. This is now used by default for
cuts on massive particles such as the $W^\pm$, $Z^0$ and Higgs
bosons and the top quark
*** Several changes to the decayers of B mesons
both to resolve problems with the modelling of partonic decays and
improve agreement with $\Upsilon(4s)$ data
*** Changes to allow values other than transverse mass of final-state particles as maximum transverse momentum for radiation in parton shower
either SCALUP for Les Houches events or the scale of the hard
process for internally generated hard processes
*** Changed defaults for intrinsic transverse momentum in hadron collisions
to 1.9GeV, 2.1GeV and 2.2GeV for the Tevatron and LHC at 10 TeV and
14 TeV, respectively
*** Pdfinfo object is now created in the HepMC interface
However in order to support all versions of HepMC containing this
feature the PDF set is not specified as not all versions contain
this information
*** New option of only decaying particles with lifetimes below user specified value
*** New options for the cut-off in the shower
and some obsolete parameters removed
*** Added option of switching off certain decay modes in BSM models
*** Added a Matcher for Higgs boson
to allow cuts to be placed on it
*** Diffractive particles deleted from default input files
they were not previously used
** Technical changes:
*** Some AnalysisHandler classes comparing to LEP data have been renamed
e.g. MultiplicityCount becomes LEPMultiplicityCount to avoid
confusion with those supplied in /Contrib for observables at the
Upsilon(4s) resonance
*** Reorganisation to remove the majority of the .icc files
by moving inlined functions to headers in an effort to improve
compile time
*** Restructured the decay libraries to reduce the amount of memory allocation
and de-allocation which improves run-time performance
*** The switch to turn off LoopTools has been removed
because LoopTools is now used by several core modules. As LoopTools
does not work on 64-bit platforms with g77 this build option is not
supported
*** Removed support for obsolete version of HepMC supplied with CLHEP
and improved the support for different units options with HepMC
*** EvtGen interface has been removed until it is more stable
*** Support for ROOT has been removed
it was not previously used
*** CKKW infrastructure has been removed from the release
until a concrete implementation is available
*** Default optimisation has been increased from -O2 to -O3
*** Handling of the fortran compiler has been improved
mainly due to improvements in the autotools
*** Use of FixedAllocator for Particle objects in ThePEG has been removed
as it had no performance benefits
** Bugs fixed:
*** Problems with the mother/daughter relations in the hard process
and diagram selection in W+- and Z0 production in association with a
hard jet
*** In general matrix element code for fermion-vector to fermion-scalar
where the outgoing fermion is coloured and the scalar neutral
*** In the selection of diagrams in some associated squark gaugino processes
*** h0->mu+mu- was being generated when h0->tau+tau-
*** Normalisation in the Histogram class for non unit-weight events
*** Protection against negative PDF values has been improved
these can occur when using NLO PDF sets
*** Lifetime for BSM particles is now automatically calculated
at the same time as the width
*** Hadrons containing a top quark now treated like hadrons containing BSM particles
in order to support this possibility
*** Several ambiguous uses of unsigned int
*** Several variables that may have been used undefined
*** Several memory leaks at initialisation
*** The configuration now aborts if no fortran compiler is found
as this is required to compile Looptools
*** Several minor floating point errors that did not affect results
* Herwig++-2.2.1 release: 2008-07-09 (tagged at SVN r3434)
** Ticket #181: BSM shower with a decay close to threshold
Now fixed.
** Ticket #191: Split SUSY crash
Improved error message.
** Ticket #192: using SCALUP as the pT veto in the shower
Now implemented.
** Ticket #194: production processes of ~chi_1(2)-
Fixed bug in the diagram creation.
** Removed unused particles
DiffractiveParticles.in was removed, they were never produced.
** Hadronization
Top quark clusters now possible, handled as 'exotic' clusters.
** Improved handling of decay modes
See ThePEG-1.3.0. 'defaultparticle' command is now obsolete.
** Multi-Parton interactions
Increased phase space sampling to have less than 1% uncertainty on
average multiplicity.
** New libtool version
gfortran is now used as default if it is available. Set FC=g77 to
override this.
** Fixed several memory leaks
** Memory allocation
Now using plain 'new' and 'delete'.
* Herwig++-2.2.0 release: 2008-04-18 (tagged at SVN r3195)
** Major release: now as stand-alone library
Herwig++ is now a stand-alone dlopen() plugin to ThePEG.
No compile-time linking to Herwig code is required. The Herwig++
binary is a simple executable steering ThePEG, which can
be replaced by other frontends (such as setupThePEG / runThePEG).
** New matrix elements
p p -> W + jet / Z + jet / W + higgs / Z + higgs
e+ e- -> Z + higgs
** Looptools
Updated to version 2.2.
** Ticket #141: segfault from using 'run' command
Fixed by using default allocators in Herwig++, and the
Repository::cleanup() method in ThePEG 1.2.0.
** Ticket #157: broken gsl library path on some 64bit systems
Paths with lib64 are correctly identified now.
** Ticket #159: p_t spectrum of ttbar pair
Fixed identical particle multiplier in Sudakov form factor.
** Ticket #161: glibc segfault
Rare segfault in MPI handler fixed.
** Ticket #165: rare infinite loop in four-body decay
All 4-body decays without dedicated decayers now use the Mambo algorithm.
A loop guard has been introduced to 3-body decays to avoid infinite retries.
** Ticket #166: rare infinite loop in top ME correction
These very rare events (O(1) in 10^7) close to mass threshold
now are discarded.
** Higgs width fixes
** SatPDF
Optionally, the PDF extrapolation behaviour outside a given range
can now be specified.
** gcc 4.3
Herwig++-2.2 compiles cleanly with the new gcc 4.3 series.
* Herwig++-2.1.4 release: 2008-03-03 (tagged at SVN r3024)
** Ticket #152: Vertex positions
All vertex positions of unphysical particles are set to zero until
a fix for the previous nonsensical values can be implemented.
* Herwig++-2.1.3 release: 2008-02-25 (tagged at SVN r2957)
** Ticket #129: Baryon decays
Fix for baryon decay modes.
** Ticket #131: HepMC
Check if IO_GenEvent exists
** Ticket #134: Hadronization
Smearing of hadron directions in cluster decay fixed.
** Ticket #137: HepMC
HepMC conversion allows specification of energy and length units to
be used.
** Ticket #139: Neutral kaons
Ratio K_L / K_S corrected.
** Ticket #140 / #141: Crash on shutdown
Event generation from the 'read' stage or an interface now shuts
down cleanly. Fixes a crash bug introduced in 2.1.1 which affected
external APIs to ThePEG / Herwig.
** Ticket #146: BSM models can be disabled
To save build time, some or all of the BSM models can be disabled
using the '--enable-models' configure switch.
** Reorganised .model files
The .model files now include the model-specific particles, too.
** Re-tune
Re-tuned hadronization parameters to LEP data.
** Other fixes in
QSPAC implementation in Shower; Multi-parton interaction tuning;
MRST initialization
* Herwig++-2.1.2 release: 2008-01-05 (tagged at SVN r2694)
** Ticket #127
Thanks to a patch submitted by Fred Stober, HepMCFile now can
output event files in all supported formats.
** Ticket #128
Fixed incorrect value of pi in histogram limits.
** Other fixes in
CKKW Qtilde clusterers, BSM width cut, SUSY mixing matrices.
* Herwig++-2.1.1 release: 2007-12-08 (tagged at SVN r2589)
** Bug #123
Fixed a bug with particle lifetimes which resulted in nan for some
vertex positions.
** Secondary scatters
Fixed bug which gave intrinsic pT to secondary scatters.
** gcc abs bug detection
configure now checks for and works around
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34130
** CKKW reweighting
Fixed wrong check for top quarks.
** MPIHandler
Fixed call order ambiguity.
* Herwig++-2.1.0 release: 2007-11-20 (tagged at SVN r2542)
** Major new release
Herwig++-2.1 includes significant improvements, including
multi-parton interactions, BSM physics and a new hadronic decay
model, tuned to LEP data.
For an overview of the changes, please see the release note
arXiv:0711.3137
* Herwig++-2.0.3 release: 2007-08-21 (tagged at SVN r2101)
** Bug #90
nan in top decay ME corrections fixed.
** unlisted
Colour flow fix in LightClusterDecayer
** unlisted
Updated version of MultiplicityCount analysis handler.
* Herwig++-2.0.2 release: 2007-07-06 (tagged at SVN r1716)
** Bug #80
Separation of HepMC from CLHEP is handled properly now.
** Bug #83
Workaround for OS X header problem
** unlisted
Veto on very hard emissions from Shower.
** unlisted
Detailed documentation in .in files
* Herwig++-2.0.1 release: 2006-12-05 (tagged at SVN r1195)
** Bug #54
ClusterFissioner vertex calculation fixed.
** Bug #57
Crash when showering W+jet events supplied by Les Houches interface.
** Bug #59
Fix for #57 applied to LHC events.
** Bug #60
Segfault when PDF is set to NoPDF.
** Bug #61
Missing weight factor for I=0 mesons
** Bug #62
Spinor vertex calculations broken when spinor rep is not default rep.
** Bug #63
Top decay never produces tau.
** Bug #69
TTbar and HiggsJet analysis handlers fixed.
** unlisted
Reorganization of Hadronization module gives 30% speedup.
Thanks to Vincenzo Innocente at CMS for his profiling work!
** unlisted
cleaner automake files in include/ and src/
** unlisted
Hw64 hadron selection algorithm 'abortnow' fixed.
** unlisted
Top/LeptonDalitzAnalysis removed (only worked with modified code).
** unlisted
removed f'_0 from particle list, decays were not handled
* Herwig++-2.0.0 release: 2006-09-28 (tagged at SVN r1066)
** Full simulation of hadron collisions
diff --git a/README b/README
--- a/README
+++ b/README
@@ -1,14 +1,14 @@
========
Herwig 7
========
-This is the release of Herwig 7.1.1, a multi purpose event
+This is the release of Herwig 7.1.2, a multi purpose event
generator for high energy physics.
The Herwig++ distribution contains an adapted version of LoopTools 2.6
<http://www.feynarts.de/looptools/>.
BUILD AND INSTALL
=================
Please refer to https://herwig.hepforge.org/tutorials/ for detailed
instructions.
diff --git a/Shower/Dipole/Kinematics/FIMassiveKinematics.cc b/Shower/Dipole/Kinematics/FIMassiveKinematics.cc
--- a/Shower/Dipole/Kinematics/FIMassiveKinematics.cc
+++ b/Shower/Dipole/Kinematics/FIMassiveKinematics.cc
@@ -1,312 +1,312 @@
// -*- C++ -*-
//
// FIMassiveKinematics.cc is a part of Herwig - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2017 The Herwig Collaboration
//
// Herwig is licenced under version 3 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the FIMassiveKinematics class.
//
#include "FIMassiveKinematics.h"
#include "ThePEG/Interface/ClassDocumentation.h"
#include "ThePEG/Persistency/PersistentOStream.h"
#include "ThePEG/Persistency/PersistentIStream.h"
#include "ThePEG/Repository/UseRandom.h"
#include "ThePEG/Repository/EventGenerator.h"
#include "Herwig/Shower/Dipole/Base/DipoleSplittingInfo.h"
#include "Herwig/Shower/Dipole/Kernels/DipoleSplittingKernel.h"
using namespace Herwig;
FIMassiveKinematics::FIMassiveKinematics()
: DipoleSplittingKinematics() {}
FIMassiveKinematics::~FIMassiveKinematics() {}
IBPtr FIMassiveKinematics::clone() const {
return new_ptr(*this);
}
IBPtr FIMassiveKinematics::fullclone() const {
return new_ptr(*this);
}
pair<double,double> FIMassiveKinematics::kappaSupport(const DipoleSplittingInfo&) const {
return {0.0,1.0};
}
pair<double,double> FIMassiveKinematics::xiSupport(const DipoleSplittingInfo& split) const {
double c = sqrt(1.-4.*sqr(IRCutoff()/generator()->maximumCMEnergy()));
if ( split.index().emitterData()->id() == ParticleID::g ) {
if ( split.emissionData()->id() != ParticleID::g )
return {0.5*(1.-c),0.5*(1.+c)};
double b = log((1.+c)/(1.-c));
return {-b,b};
}
return {-log(0.5*(1.+c)),-log(0.5*(1.-c))};
}
// sbar
Energy FIMassiveKinematics::dipoleScale(const Lorentz5Momentum& pEmitter,
const Lorentz5Momentum& pSpectator) const {
return sqrt(2.*(pEmitter*pSpectator));
}
Energy FIMassiveKinematics::ptMax(Energy dScale,
double, double specX,
const DipoleIndex& ind,
const DipoleSplittingKernel& split) const {
Energy mi = split.emitter(ind)->mass(), mj = split.emission(ind)->mass();
Energy2 mi2 = sqr(mi), mj2 = sqr(mj);
Energy2 mij2 = split.emitter(ind)->id() + split.emission(ind)->id() == 0 ?
0.*GeV2 : mi2;
Energy2 sPrime = sqr(dScale) * (1.-specX)/specX + mij2;
return .5 * sqrt(sPrime) * rootOfKallen( sPrime/sPrime, mi2/sPrime, mj2/sPrime );
}
// what is this? in FF it is given by y+*dScale = sqrt( 2qi*q / bar )->max
Energy FIMassiveKinematics::QMax(Energy dScale,
double, double specX,
const DipoleIndex&,
const DipoleSplittingKernel&) const {
generator()->log() << "FIMassiveKinematics::QMax called.\n" << flush;
assert(false && "implementation missing");
// this is sqrt( 2qi*q ) -> max;
return dScale * sqrt((1.-specX)/specX);
}
Energy FIMassiveKinematics::PtFromQ(Energy scale, const DipoleSplittingInfo& split) const {
// from Martin's thesis
double z = split.lastZ();
Energy mi = split.emitterData()->mass();
Energy mj = split.emissionData()->mass();
Energy2 pt2 = z*(1.-z)*sqr(scale) - (1-z)*sqr(mi) - z*sqr(mj);
assert(pt2 >= ZERO);
return sqrt(pt2);
}
Energy FIMassiveKinematics::QFromPt(Energy pt, const DipoleSplittingInfo& split) const {
// from Martin's thesis
double z = split.lastZ();
Energy mi = split.emitterData()->mass();
Energy mj = split.emissionData()->mass();
Energy2 Q2 = (sqr(pt) + (1-z)*sqr(mi) + z*sqr(mj))/(z*(1.-z));
return sqrt(Q2);
}
double FIMassiveKinematics::ptToRandom(Energy pt, Energy,
double,double,
const DipoleIndex&,
const DipoleSplittingKernel&) const {
return log(pt/IRCutoff()) / log(0.5 * generator()->maximumCMEnergy()/IRCutoff());
}
bool FIMassiveKinematics::generateSplitting(double kappa, double xi, double rphi,
DipoleSplittingInfo& info,
const DipoleSplittingKernel&) {
if ( info.spectatorX() < xMin() ) {
jacobian(0.0);
return false;
}
Energy pt = IRCutoff() * pow(0.5 * generator()->maximumCMEnergy()/IRCutoff(),kappa);
if ( pt > info.hardPt() || pt < IRCutoff() ) {
jacobian(0.0);
return false;
}
double z;
double mapZJacobian;
if ( info.index().emitterData()->id() == ParticleID::g ) {
if ( info.emissionData()->id() != ParticleID::g ) {
z = xi;
mapZJacobian = 1.;
} else {
z = exp(xi)/(1.+exp(xi));
mapZJacobian = z*(1.-z);
}
} else {
z = 1.-exp(-xi);
mapZJacobian = 1.-z;
}
// Construct mass squared variables
Energy2 mi2 = sqr(info.emitterData()->mass());
Energy2 mj2 = sqr(info.emissionData()->mass());
Energy2 mij2 = info.emitterData()->id()+info.emissionData()->id() == 0 ?
0.*GeV2 : mi2;
Energy2 pt2 = sqr(pt);
// 2 pij.pb
Energy2 sbar = sqr(info.scale());
// Compute x
double x = 1. / ( 1. +
( pt2 + (1.-z)*mi2 + z*mj2 - z*(1.-z)*mij2 ) /
( z*(1.-z)*sbar ) );
// Check the limit on x
double xs = info.spectatorX();
if ( x < xs ) {
jacobian(0.0);
return false;
}
// Compute and check the z limits
Energy2 sPrime = sbar * (1.-xs)/xs + mij2;
Energy hard=info.hardPt();
if(openZBoundaries()==1){
hard=.5 * sqrt(sPrime) * rootOfKallen( sPrime/sPrime, mi2/sPrime, mj2/sPrime );
}
if(openZBoundaries()==2){
Energy2 s = mij2 - sbar;
hard=min(0.5*sqrt(sPrime) *
rootOfKallen( sPrime/sPrime, mi2/sPrime, mj2/sPrime ) ,
0.5*sqrt(s) *
rootOfKallen( s/s, mi2/s, mj2/s ));
}
double ptRatio = sqrt(1.-sqr(pt/hard));
double zm1 = .5*( 1.+(mi2-mj2)/sPrime - rootOfKallen(sPrime/sPrime,mi2/sPrime,mj2/sPrime) * ptRatio);
double zp1 = .5*( 1.+(mi2-mj2)/sPrime + rootOfKallen(sPrime/sPrime,mi2/sPrime,mj2/sPrime) * ptRatio);
if ( z > zp1 || z < zm1 ) {
jacobian(0.0);
return false;
}
// additional purely kinematic constraints from
// the integration limits in Catani-Seymour
double mui2CS = x*mi2/sbar;
double muj2CS = x*mj2/sbar;
double muij2CS = x*mij2/sbar;
// Limit on x
double xp = 1. + muij2CS - sqr(sqrt(mui2CS)+sqrt(muj2CS));
if (x > xp ) {
jacobian(0.0);
return false;
}
// Limit on z
double root = sqr(1.-x+muij2CS-mui2CS-muj2CS)-4.*mui2CS*muj2CS;
if( root < 0. && root>-1e-10 ) {
// assert(false);
root = 0.;
}
else if (root <0. ) {
jacobian(0.0);
return false;
}
root = sqrt(root);
- double zm2 = .5*( 1.-x+muij2CS+mui2CS-mui2CS - root ) / (1.-x+muij2CS);
- double zp2 = .5*( 1.-x+muij2CS+mui2CS-mui2CS + root ) / (1.-x+muij2CS);
+ double zm2 = .5*( 1.-x+muij2CS+mui2CS-muj2CS - root ) / (1.-x+muij2CS);
+ double zp2 = .5*( 1.-x+muij2CS+mui2CS-muj2CS + root ) / (1.-x+muij2CS);
if ( z > zp2 || z < zm2 ) {
jacobian(0.0);
return false;
}
// Store the splitting variables
double phi = 2.*Constants::pi*rphi;
// Compute and store the jacobian
double jacPt2 = 1. / ( 1. + (1.-z)*mi2/pt2 + z*mj2/pt2 - z*(1.-z)*mij2/pt2 );
jacobian( jacPt2 * mapZJacobian * 2.*log(0.5 * generator()->maximumCMEnergy()/IRCutoff()));
lastPt(pt);
lastZ(z);
lastPhi(phi);
lastSpectatorZ(x);
if ( theMCCheck )
theMCCheck->book(1.,info.spectatorX(),info.scale(),info.hardPt(),pt,z,jacobian());
return true;
}
void FIMassiveKinematics::generateKinematics(const Lorentz5Momentum& pEmitter,
const Lorentz5Momentum& pSpectator,
const DipoleSplittingInfo& dInfo) {
// Get splitting variables
Energy pt = dInfo.lastPt();
double z = dInfo.lastZ();
// Compute sqr scales
Energy2 pt2 = sqr(pt);
Energy2 sbar = sqr(dInfo.scale());
Lorentz5Momentum kt =
getKt (pSpectator, pEmitter, pt, dInfo.lastPhi(),true);
Energy2 mi2 = sqr(dInfo.emitterData()->mass());
Energy2 mj2 = sqr(dInfo.emissionData()->mass());
Energy2 mij2 = dInfo.emitterData()->id() + dInfo.emissionData()->id() == 0 ?
0.*GeV2 : mi2;
double xInv = ( 1. +
(pt2+(1.-z)*mi2+z*mj2-z*(1.-z)*mij2) /
(z*(1.-z)*sbar) );
Lorentz5Momentum em = z*pEmitter +
(pt2+mi2-z*z*mij2)/(z*sbar)*pSpectator + kt;
em.setMass(sqrt(mi2));
em.rescaleEnergy();
Lorentz5Momentum emm = (1.-z)*pEmitter +
(pt2+mj2-sqr(1.-z)*mij2)/((1.-z)*sbar)*pSpectator - kt;
emm.setMass(sqrt(mj2));
emm.rescaleEnergy();
Lorentz5Momentum spe = xInv*pSpectator;
spe.setMass(ZERO);
spe.rescaleEnergy();
emitterMomentum(em);
emissionMomentum(emm);
spectatorMomentum(spe);
}
// If needed, insert default implementations of function defined
// in the InterfacedBase class here (using ThePEG-interfaced-impl in Emacs).
void FIMassiveKinematics::persistentOutput(PersistentOStream & ) const {
}
void FIMassiveKinematics::persistentInput(PersistentIStream & , int) {
}
ClassDescription<FIMassiveKinematics> FIMassiveKinematics::initFIMassiveKinematics;
// Definition of the static class description member.
void FIMassiveKinematics::Init() {
static ClassDocumentation<FIMassiveKinematics> documentation
("FIMassiveKinematics implements massless splittings "
"off a final-initial dipole.");
}
diff --git a/Shower/Dipole/Makefile.am b/Shower/Dipole/Makefile.am
--- a/Shower/Dipole/Makefile.am
+++ b/Shower/Dipole/Makefile.am
@@ -1,22 +1,22 @@
SUBDIRS = Base Kernels Kinematics Utility AlphaS Merging
pkglib_LTLIBRARIES = HwDipoleShower.la
-HwDipoleShower_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:1:0
+HwDipoleShower_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 8:2:0
HwDipoleShower_la_LIBADD = \
Base/libHwDipoleShowerBase.la \
Kernels/libHwDipoleShowerKernels.la \
Kinematics/libHwDipoleShowerKinematics.la \
Utility/libHwDipoleShowerUtility.la \
Merging/libHwDipoleShowerMerging.la
HwDipoleShower_la_SOURCES = \
DipoleShowerHandler.h DipoleShowerHandler.fh DipoleShowerHandler.cc
pkglib_LTLIBRARIES += HwKrknloEventReweight.la
HwKrknloEventReweight_la_SOURCES = \
KrkNLO/KrknloEventReweight.h KrkNLO/KrknloEventReweight.cc
HwKrknloEventReweight_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 1:0:0
diff --git a/lib/Makefile.am b/lib/Makefile.am
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,49 +1,49 @@
pkglib_LTLIBRARIES = Herwig.la
Herwig_la_SOURCES =
Herwig_la_LIBTOOLFLAGS = --tag=CXX
-Herwig_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 22:0:0
+Herwig_la_LDFLAGS = $(AM_LDFLAGS) -module -version-info 23:0:0
Herwig_la_LDFLAGS += $(THEPEGLDFLAGS) $(FCLIBS)
Herwig_la_LIBADD = \
$(top_builddir)/Hadronization/libHwHadronization.la \
$(top_builddir)/Models/libHwStandardModel.la \
$(top_builddir)/Decay/libHwDecay.la \
$(top_builddir)/Decay/libHwFormFactor.la \
$(top_builddir)/Decay/libHwDecRad.la \
$(top_builddir)/Utilities/libHwUtils.la \
$(top_builddir)/Models/libHwModelGenerator.la \
$(top_builddir)/Decay/General/libHwGeneralDecay.la \
$(top_builddir)/MatrixElement/General/libHwGeneralME.la \
$(top_builddir)/MatrixElement/libHwME.la \
$(top_builddir)/MatrixElement/Reweighters/libHwReweighters.la \
$(top_builddir)/MatrixElement/Matchbox/libHwMatchbox.la \
$(top_builddir)/Decay/libHwWeakCurrent.la \
$(top_builddir)/Looptools/libHwLooptools.la \
$(top_builddir)/Shower/libHwShower.la \
$(THEPEGLIB) -ldl
dist_noinst_SCRIPTS = fix-osx-path
POSTPROCESSING = done-all-links
if NEED_APPLE_FIXES
POSTPROCESSING += apple-fixes
endif
all-local: $(POSTPROCESSING)
done-all-links: Herwig.la
find $(top_builddir) \( -name '*.so.*' -or -name '*.so' \) \
-not -name 'lib*' -not -path '$(top_builddir)/lib/*' \
-not -path '$(top_builddir)/.hg/*' -exec $(LN_S) -f \{\} \;
$(LN_S) -f .libs/Herwig*so* .
echo "stamp" > $@
apple-fixes: fix-osx-path done-all-links
./$<
echo "stamp" > $@
clean-local:
rm -f *.so *.so.* done-all-links apple-fixes
diff --git a/src/DIS.in b/src/DIS.in
--- a/src/DIS.in
+++ b/src/DIS.in
@@ -1,85 +1,75 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on DIS parameters
# usage: Herwig read DIS.in
##################################################
read snippets/EPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
# no pdfs for leptons
set /Herwig/Shower/ShowerHandler:PDFB /Herwig/Partons/ShowerLOPDF
set /Herwig/Partons/MPIExtractor:SecondPDF /Herwig/Partons/MPIPDF
set /Herwig/Partons/EPExtractor:SecondPDF /Herwig/Partons/HardNLOPDF
##################################################
# DIS physics parameters (override defaults here)
##################################################
##################################################
# Matrix Elements for lepton-hadron collisions
# (by default only neutral-current switched on)
##################################################
cd /Herwig/MatrixElements/
# Neutral current DIS
insert SubProcess:MatrixElements[0] MEDISNC
# Charged current matrix element
insert SubProcess:MatrixElements[0] MEDISCC
##################################################
# NLO IN POWHEG SCHEME
##################################################
###################################################
## Need to use an NLO PDF
###################################################
# set /Herwig/Particles/p+:PDF /Herwig/Partons/HardNLOPDF
# set /Herwig/Particles/pbar-:PDF /Herwig/Partons/HardNLOPDF
# set /Herwig/Partons/EPExtractor:SecondPDF /Herwig/Partons/HardNLOPDF
#
###################################################
## Setup the POWHEG shower
###################################################
#cd /Herwig/Shower
#set ShowerHandler:HardEmission POWHEG
-#read Matchbox/Powheg-Default-ShowerAlphaSTune.in
###################################################
## NLO Matrix Elements for lepton-hadron collisions
## in the POWHEG approach
###################################################
#
#cd /Herwig/MatrixElements/
#
## Neutral current DIS
#insert SubProcess:MatrixElements[0] PowhegMEDISNC
## Charged current matrix element
#insert SubProcess:MatrixElements[0] PowhegMEDISCC
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
cd /Herwig/Generators
saverun DIS EventGenerator
diff --git a/src/GammaGamma.in b/src/GammaGamma.in
--- a/src/GammaGamma.in
+++ b/src/GammaGamma.in
@@ -1,71 +1,62 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LEP parameters
# usage: Herwig read LEP.in
##################################################
read snippets/EECollider.in
##################################################
# Change the electron/position PDFs
##################################################
set /Herwig/Particles/e+:PDF /Herwig/Partons/WWPDF
set /Herwig/Particles/e-:PDF /Herwig/Partons/WWPDF
set /Herwig/Shower/ShowerHandler:PDFA NULL
set /Herwig/Shower/ShowerHandler:PDFB NULL
##################################################
# Selected the hard process
##################################################
cd /Herwig/MatrixElements
# fermion-antifermion
insert SubProcess:MatrixElements 0 /Herwig/MatrixElements/MEgg2ff
# W+W-
#insert SubProcess:MatrixElements 0 /Herwig/MatrixElements/MEgg2WW
##################################################
# Gamma-Gamma physics parameters (override defaults)
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 500.
cd /Herwig/Generators
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
###################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun GammaGamma EventGenerator
##################################################
# uncomment this section for an example batch run
# of two repeats with different parameters
#
# Note that a separate call of 'Herwig run'
# is not required
##################################################
# set EventGenerator:NumberOfEvents 100
# run LEP-Zpole EventGenerator
# set EventGenerator:EventHandler:LuminosityFunction:Energy 208.0
# run LEP-maxE EventGenerator
diff --git a/src/ILC-MSSM.in b/src/ILC-MSSM.in
--- a/src/ILC-MSSM.in
+++ b/src/ILC-MSSM.in
@@ -1,75 +1,66 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the MSSM in lepton collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/EECollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
read MSSM.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW Yes
# Example hard process: incoming leptons outgoing gaugions
insert HPConstructor:Incoming 0 /Herwig/Particles/e+
insert HPConstructor:Incoming 1 /Herwig/Particles/e-
insert HPConstructor:Outgoing 0 /Herwig/Particles/~chi_20
insert HPConstructor:Outgoing 1 /Herwig/Particles/~chi_1+
insert HPConstructor:Outgoing 2 /Herwig/Particles/~chi_2+
insert HPConstructor:Outgoing 3 /Herwig/Particles/~chi_30
# --- Perturbative Decays ---
# Read in the spectrum file and optional decay table.
# If a decay table is in a separate file
# then add another 'setup' line with that
# file as the argument. The provided
# spectrum file is an example using SPheno 2.2.3
setup MSSM/Model CMSSM40.1.1.slha
# Other parameters for run
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 800.0
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
saverun ILC-MSSM EventGenerator
diff --git a/src/ILC-MUED.in b/src/ILC-MUED.in
--- a/src/ILC-MUED.in
+++ b/src/ILC-MUED.in
@@ -1,76 +1,67 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based for MUED in lepton collisions
#
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/EECollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
read MUED.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# The UED parameters (these are the default)
set MUED/Model:InverseRadius 300.*GeV
set MUED/Model:LambdaR 20
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW Yes
# Example hard process: Incoming leptons, outgoing kk bosons and leptons
insert HPConstructor:Incoming 0 /Herwig/Particles/e+
insert HPConstructor:Incoming 1 /Herwig/Particles/e-
insert HPConstructor:Outgoing 0 /Herwig/Particles/KK1_Z0
insert HPConstructor:Outgoing 1 /Herwig/Particles/KK1_W+
insert HPConstructor:Outgoing 2 /Herwig/Particles/KK1_e_L-
insert HPConstructor:Outgoing 3 /Herwig/Particles/KK1_e_R-
# Other parameters for run
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 800.0
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun ILC-MUED EventGenerator
diff --git a/src/ILC-RS.in b/src/ILC-RS.in
--- a/src/ILC-RS.in
+++ b/src/ILC-RS.in
@@ -1,70 +1,61 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Randell-Sundrum model
# in lepton collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/EECollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read RS.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming leptons,resonant gravition
insert ResConstructor:Incoming 0 /Herwig/Particles/e-
insert ResConstructor:Incoming 1 /Herwig/Particles/e+
insert ResConstructor:Intermediates 0 /Herwig/Particles/Graviton
insert ResConstructor:Outgoing 0 /Herwig/Particles/e+
insert ResConstructor:Outgoing 0 /Herwig/Particles/W+
insert ResConstructor:Outgoing 0 /Herwig/Particles/Z0
insert ResConstructor:Outgoing 0 /Herwig/Particles/u
insert ResConstructor:Outgoing 0 /Herwig/Particles/t
# coupling
# set RS/Model:Lambda_pi 10000*GeV
# Other parameters for run
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 800.0
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun ILC-RS EventGenerator
diff --git a/src/ILC.in b/src/ILC.in
--- a/src/ILC.in
+++ b/src/ILC.in
@@ -1,85 +1,76 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on ILC parameters
# usage: Herwig read ILC.in
#
# Since most parameters are identical to LEP,
# we use the default EventGenerator and adapt only
# for the differences
##################################################
read snippets/EECollider.in
##################################################
# Change settings for the ee->Z->qq matrix element
# to produce only top quarks
#
# 'set' lines like this can be omitted if the
# default value is already okay.
#
# Any repository setting can be modified here
##################################################
##################################################
# Selected the hard process
##################################################
cd /Herwig/MatrixElements
# default e+e- > t tbar
insert SubProcess:MatrixElements 0 MEee2gZ2qq
set MEee2gZ2qq:MinimumFlavour 6
set MEee2gZ2qq:MaximumFlavour 6
# e+e- > l+l-
# insert SubProcess:MatrixElements[0] MEee2gZ2ll
# e+e- > W+W- ZZ
# insert SubProcess:MatrixElements[0] MEee2VV
# higgs+Z
# insert SubProcess:MatrixElements[0] MEee2ZH
# higgs+e+e-/nu_enu_ebar via VBF
# insert SubProcess:MatrixElements[0] MEee2HiggsVBF
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
##################################################
# ILC physics parameters (override defaults)
##################################################
set EventGenerator:EventHandler:LuminosityFunction:Energy 500.0
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun ILC EventGenerator
##################################################
# uncomment this section for an example batch run
# of two repeats with different parameters
#
# Note that a separate call of 'Herwig run'
# is not required
##################################################
# set EventGenerator:NumberOfEvents 100
# run ILC-tt EventGenerator
# set /Herwig/MatrixElements/MEee2gZ2qq:MinimumFlavour 5
# set /Herwig/MatrixElements/MEee2gZ2qq:MaximumFlavour 5
# run ILC-bb EventGenerator
diff --git a/src/LEP.in b/src/LEP.in
--- a/src/LEP.in
+++ b/src/LEP.in
@@ -1,85 +1,75 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LEP parameters
# usage: Herwig read LEP.in
##################################################
read snippets/EECollider.in
##################################################
# Change settings for the ee->Z->qq matrix element
# to avoid producing top quarks
#
# 'set' lines like this can be omitted if the
# default value is already okay.
#
# Any repository setting can be modified here
##################################################
##################################################
# Selected the hard process
##################################################
# leading-order processes
##################################################
cd /Herwig/MatrixElements
# default e+e- > q qbar (5 flavours d,u,s,c,b)
insert SubProcess:MatrixElements 0 MEee2gZ2qq
# e+e- > l+l-
# insert SubProcess:MatrixElements[0] MEee2gZ2ll
# e+e- > W+W- ZZ
# insert SubProcess:MatrixElements[0] MEee2VV
# higgs+Z
# insert SubProcess:MatrixElements[0] MEee2ZH
# higgs+e+e-/nu_enu_ebar via VBF
# insert SubProcess:MatrixElements[0] MEee2HiggsVBF
##################################################
# NLO powheg processes
##################################################
#set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
-#read Matchbox/Powheg-Default-ShowerAlphaSTune.in
#insert SubProcess:MatrixElements 0 PowhegMEee2gZ2qq
#insert SubProcess:MatrixElements 0 PowhegMEee2gZ2ll
##################################################
# LEP physics parameters (override defaults)
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 91.2
cd /Herwig/Generators
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
###################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LEP EventGenerator
##################################################
# uncomment this section for an example batch run
# of two repeats with different parameters
#
# Note that a separate call of 'Herwig run'
# is not required
##################################################
# set EventGenerator:NumberOfEvents 100
# run LEP-Zpole EventGenerator
# set EventGenerator:EventHandler:LuminosityFunction:Energy 208.0
# run LEP-maxE EventGenerator
diff --git a/src/LHC-ADD.in b/src/LHC-ADD.in
--- a/src/LHC-ADD.in
+++ b/src/LHC-ADD.in
@@ -1,68 +1,59 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Randall-Sundrum model
# in hadron collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read ADD.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton, gravition + jet
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 0 /Herwig/Particles/ubar
insert HPConstructor:Incoming 0 /Herwig/Particles/d
insert HPConstructor:Incoming 0 /Herwig/Particles/dbar
insert HPConstructor:Incoming 0 /Herwig/Particles/s
insert HPConstructor:Incoming 0 /Herwig/Particles/sbar
insert HPConstructor:Incoming 0 /Herwig/Particles/c
insert HPConstructor:Incoming 0 /Herwig/Particles/cbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/Graviton
# coupling
set ADD/Model:Delta 2
set ADD/Model:DdPlanckMass 1000.*GeV
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-ADD EventGenerator
diff --git a/src/LHC-CEX.in b/src/LHC-CEX.in
--- a/src/LHC-CEX.in
+++ b/src/LHC-CEX.in
@@ -1,104 +1,95 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LHC parameters
# usage: Herwig read LHC-CEX.in
##################################################
read snippets/PPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
##################################################
# LHC physics parameters (override defaults here)
##################################################
set EventGenerator:EventHandler:LuminosityFunction:Energy 13000.0
cd /Herwig/Partons
# Set the PDFs for the beams
# This is for double CEX, comment out either the first or second
# for single CEX
set PPExtractor:FirstPDF PomeronFlux
set PPExtractor:SecondPDF PomeronFlux
## Reggeon Structure Function #################################
# MUST HAVE LHAPDF linked with ThePEG
#create ThePEG::LHAPDF PionPDF ThePEGLHAPDF.so
#set PionPDF:PDFNumber 212
#set PionPDF:PType PionOrVMD
#set PionPDF:RangeException Freeze
#
#create ThePEG::SoftRemnantHandler PionRemnants
#set PionRemnants:RemnantDecayer RemnantDecayer
#set PionPDF:RemnantHandler /Herwig/Partons/PionRemnants
#
#create Herwig::ReggeonPDF ReggeonPDF HwReggeonPDF.so
#set ReggeonPDF:PDF PionPDF
#set ReggeonPDF:RemnantHandler PionRemnants
#set /Herwig/Particles/reggeon:PDF ReggeonPDF
# uncomment to switch pomeron off if only reggeon required
#set /Herwig/Particles/pomeron:PDF NULL
#################################################################
##################################################
# Choice of phase-space generation for PDFs
##################################################
set PPExtractor:FlatSHatY 0
##################################################
# Cuts
##################################################
cd /Herwig/Cuts
set Cuts:MHatMin 1.
set Cuts:MHatMax 20000
set Cuts:X2Min 1.0e-7
set Cuts:X2Max 1.
set Cuts:X1Min 1.0e-7
set Cuts:X1Max 1.
set JetKtCut:MinKT 10.
set LeptonKtCut:MinKT 1.
##################################################
# Matrix Elements for CEX collisions
# (by default on QCD 2->2 switched on)
##################################################
cd /Herwig/MatrixElements/
insert SubProcess:MatrixElements[0] /Herwig/UnderlyingEvent/MEQCD2to2Fast
cd /Herwig/Generators
# MPI doesn't work
set EventGenerator:EventHandler:CascadeHandler:MPIHandler NULL
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LHC-CEX EventGenerator
diff --git a/src/LHC-GammaGamma.in b/src/LHC-GammaGamma.in
--- a/src/LHC-GammaGamma.in
+++ b/src/LHC-GammaGamma.in
@@ -1,82 +1,73 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LEP parameters
# usage: Herwig read LEP.in
##################################################
read snippets/PPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:Sampler:Ntry 10000
##################################################
# Choice of phase-space generation for PDFs
##################################################
set /Herwig/Partons/PPExtractor:FlatSHatY 0
##################################################
# Change the proton PDFs to those for photon radiation
##################################################
set /Herwig/Particles/p+:PDF /Herwig/Partons/BudnevPDF
set /Herwig/Particles/pbar-:PDF /Herwig/Partons/BudnevPDF
set /Herwig/Partons/PPExtractor:FirstPDF /Herwig/Partons/BudnevPDF
set /Herwig/Partons/PPExtractor:SecondPDF /Herwig/Partons/BudnevPDF
set /Herwig/Shower/ShowerHandler:PDFA NULL
set /Herwig/Shower/ShowerHandler:PDFB NULL
##################################################
# Cuts
##################################################
cd /Herwig/Cuts
set Cuts:ScaleMin 0.0
set Cuts:X1Min 0
set Cuts:X2Min 0
set Cuts:X1Max 1.
set Cuts:X2Max 1.
set Cuts:MHatMin 1.*GeV
erase Cuts:MultiCuts 0
set LeptonKtCut:MinKT 3*GeV
##################################################
# Selected the hard process
##################################################
cd /Herwig/MatrixElements
# fermion-antifermion
insert SubProcess:MatrixElements 0 /Herwig/MatrixElements/MEgg2ff
set /Herwig/MatrixElements/MEgg2ff:Process Muon
# W+W-
#insert SubProcess:MatrixElements 0 /Herwig/MatrixElements/MEgg2WW
##################################################
# LHC physics parameters (override defaults)
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:CascadeHandler:MPIHandler NULL
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
###################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LHC-GammaGamma EventGenerator
diff --git a/src/LHC-LH.in b/src/LHC-LH.in
--- a/src/LHC-LH.in
+++ b/src/LHC-LH.in
@@ -1,77 +1,68 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Little Higgs model
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read LH.model
cd /Herwig/NewPhysics
set LH/Model:f 1*TeV
set LH/Model:VEVRatio 0.01
##################################################
#
# This section contains the user defined settings
#
##################################################
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Example hard process: Incoming proton, outgoing T quark
set HPConstructor:IncludeEW No
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 0 /Herwig/Particles/ubar
insert HPConstructor:Incoming 0 /Herwig/Particles/d
insert HPConstructor:Incoming 0 /Herwig/Particles/dbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/T
# Example hard process: Incoming proton, outgoing leptons via Z_H
insert ResConstructor:Incoming 0 /Herwig/Particles/g
insert ResConstructor:Incoming 0 /Herwig/Particles/u
insert ResConstructor:Incoming 0 /Herwig/Particles/ubar
insert ResConstructor:Incoming 0 /Herwig/Particles/d
insert ResConstructor:Incoming 0 /Herwig/Particles/dbar
insert ResConstructor:Intermediates 0 /Herwig/Particles/Z_H
insert ResConstructor:Outgoing 0 /Herwig/Particles/e-
insert ResConstructor:Outgoing 0 /Herwig/Particles/mu-
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-LH EventGenerator
diff --git a/src/LHC-LHTP.in b/src/LHC-LHTP.in
--- a/src/LHC-LHTP.in
+++ b/src/LHC-LHTP.in
@@ -1,74 +1,65 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Little Higgs model with
# T-parity
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read LHTP.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW No
# Example hard process: Incoming proton, outgoing squarks
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 0 /Herwig/Particles/ubar
insert HPConstructor:Incoming 0 /Herwig/Particles/d
insert HPConstructor:Incoming 0 /Herwig/Particles/dbar
insert HPConstructor:Incoming 0 /Herwig/Particles/c
insert HPConstructor:Incoming 0 /Herwig/Particles/cbar
insert HPConstructor:Incoming 0 /Herwig/Particles/s
insert HPConstructor:Incoming 0 /Herwig/Particles/sbar
insert HPConstructor:Incoming 0 /Herwig/Particles/b
insert HPConstructor:Incoming 0 /Herwig/Particles/bbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/TpT
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-LHTP EventGenerator
diff --git a/src/LHC-LQ.in b/src/LHC-LQ.in
--- a/src/LHC-LQ.in
+++ b/src/LHC-LQ.in
@@ -1,77 +1,68 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Leptoquark model
# in hadron collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read Leptoquark.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton, outgoing leptoquarks
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 1 /Herwig/Particles/ubar
insert HPConstructor:Incoming 2 /Herwig/Particles/d
insert HPConstructor:Incoming 3 /Herwig/Particles/dbar
insert HPConstructor:Incoming 4 /Herwig/Particles/s
insert HPConstructor:Incoming 5 /Herwig/Particles/sbar
insert HPConstructor:Incoming 6 /Herwig/Particles/c
insert HPConstructor:Incoming 7 /Herwig/Particles/cbar
insert HPConstructor:Incoming 8 /Herwig/Particles/g
insert HPConstructor:Outgoing 0 /Herwig/Particles/S0
insert HPConstructor:Outgoing 1 /Herwig/Particles/S0bar
# Cuts
cd /Herwig/Cuts
set JetKtCut:MinKT 0.0*GeV
set Cuts:MHatMax 13000.0*GeV
set Cuts:MHatMin 0.0*GeV
set PhotonKtCut:MinKT 0.0*GeV
set PhotonKtCut:MinEta -10.
set PhotonKtCut:MaxEta 10.
set MassCut:MinM 0.*GeV
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-LQ EventGenerator
diff --git a/src/LHC-MSSM.in b/src/LHC-MSSM.in
--- a/src/LHC-MSSM.in
+++ b/src/LHC-MSSM.in
@@ -1,89 +1,80 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the MSSM
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
read MSSM.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW No
# Example hard process: Incoming proton, outgoing squarks
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 1 /Herwig/Particles/u
insert HPConstructor:Incoming 2 /Herwig/Particles/ubar
insert HPConstructor:Incoming 3 /Herwig/Particles/d
insert HPConstructor:Incoming 4 /Herwig/Particles/dbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/~u_L
insert HPConstructor:Outgoing 1 /Herwig/Particles/~u_Lbar
insert HPConstructor:Outgoing 2 /Herwig/Particles/~d_L
insert HPConstructor:Outgoing 3 /Herwig/Particles/~d_Lbar
# --- Perturbative Decays ---
# Read in the spectrum file and optional decay table.
# If a decay table is in a separate file
# then add another 'setup' line with that
# file as the argument. The provided
# spectrum file is an example using SPheno 2.2.3
setup MSSM/Model CMSSM40.1.1.slha
# To disable a particular decay mode, add it's tag to the DisableModes
# interface of the DecayConstructor object, i.e.
#insert DecayConstructor:DisableModes 0 ~u_L->~chi_20,u;
#insert DecayConstructor:DisableModes 1 ~chi_20->~e_R-,e+;
# etc ...
# To set a minimum allowed branching fraction (the default is shown)
#set NewModel:MinimumBR 1e-6
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 13000.0
saverun LHC-MSSM EventGenerator
diff --git a/src/LHC-MUED.in b/src/LHC-MUED.in
--- a/src/LHC-MUED.in
+++ b/src/LHC-MUED.in
@@ -1,92 +1,83 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the MUED
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read MUED.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# The UED parameters (these are the default)
set MUED/Model:InverseRadius 500.*GeV
set MUED/Model:LambdaR 20
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW No
# Example hard process: Incoming proton, outgoing kk quarks
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 1 /Herwig/Particles/u
insert HPConstructor:Incoming 2 /Herwig/Particles/ubar
insert HPConstructor:Incoming 3 /Herwig/Particles/d
insert HPConstructor:Incoming 4 /Herwig/Particles/dbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/KK1_u_L
insert HPConstructor:Outgoing 1 /Herwig/Particles/KK1_u_Lbar
insert HPConstructor:Outgoing 2 /Herwig/Particles/KK1_d_L
insert HPConstructor:Outgoing 3 /Herwig/Particles/KK1_d_Lbar
# --- Perturbative Decays ---
# All of the two- and three-body decay modes are calculated automatically.
# Set the next line to 'Yes' to enable the creation of the three-body modes.
# Initialisation of all three-body decayers will take several minutes.
# For production runs, they should be enabled!
set ThreeBodyDC:CreateDecayModes Yes
# To disable a particular decay mode, add it's tag to the DisableModes
# interface of the DecayConstructor object, i.e.
#insert DecayConstructor:DisableModes 0 KK1_u_L->KK1_Z0,u;
#insert DecayConstructor:DisableModes 1 KK1_Z0->KK1_e_R-,e+;
# etc ...
# To set a minimum allowed branching fraction (the default is shown)
#set NewModel:MinimumBR 1e-6
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-MUED EventGenerator
diff --git a/src/LHC-NMSSM.in b/src/LHC-NMSSM.in
--- a/src/LHC-NMSSM.in
+++ b/src/LHC-NMSSM.in
@@ -1,79 +1,70 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the NMSSM
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read NMSSM.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW No
# Example hard process: Incoming proton, outgoing squarks
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 1 /Herwig/Particles/u
insert HPConstructor:Incoming 2 /Herwig/Particles/ubar
insert HPConstructor:Incoming 3 /Herwig/Particles/d
insert HPConstructor:Incoming 4 /Herwig/Particles/dbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/~u_L
insert HPConstructor:Outgoing 1 /Herwig/Particles/~u_Lbar
insert HPConstructor:Outgoing 2 /Herwig/Particles/~d_L
insert HPConstructor:Outgoing 3 /Herwig/Particles/~d_Lbar
# --- Perturbative Decays ---
# Read in the spectrum file and optional decay table.
# If a decay table is in a separate file
# then add another 'setup' line with that
# file as the argument. The provided
# spectrum file is an example using NMHDecay-1.2.1
setup NMSSM/Model NMSSM.spc
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-NMSSM EventGenerator
diff --git a/src/LHC-Powheg.in b/src/LHC-Powheg.in
--- a/src/LHC-Powheg.in
+++ b/src/LHC-Powheg.in
@@ -1,103 +1,93 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LHC parameters
# using NLO matrix elements and matching in
# the Powheg formalism
# usage: Herwig read LHC.in
##################################################
read snippets/PPCollider.in
##################################################
# Need to use an NLO PDF
##################################################
set /Herwig/Particles/p+:PDF /Herwig/Partons/HardNLOPDF
set /Herwig/Particles/pbar-:PDF /Herwig/Partons/HardNLOPDF
set /Herwig/Shower/ShowerHandler:PDFA /Herwig/Partons/ShowerLOPDF
set /Herwig/Shower/ShowerHandler:PDFB /Herwig/Partons/ShowerLOPDF
set /Herwig/Partons/MPIExtractor:FirstPDF /Herwig/Partons/MPIPDF
set /Herwig/Partons/MPIExtractor:SecondPDF /Herwig/Partons/MPIPDF
set /Herwig/Partons/PPExtractor:FirstPDF /Herwig/Partons/HardNLOPDF
set /Herwig/Partons/PPExtractor:SecondPDF /Herwig/Partons/HardNLOPDF
##################################################
# Setup the POWHEG shower
##################################################
cd /Herwig/Shower
set ShowerHandler:HardEmission POWHEG
-read Matchbox/Powheg-Default-ShowerAlphaSTune.in
##################################################
# LHC physics parameters (override defaults here)
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 13000.0
##################################################
# Matrix Elements for hadron-hadron collisions
# (by default only gamma/Z switched on)
##################################################
cd /Herwig/MatrixElements/
# Drell-Yan Z/gamma
insert SubProcess:MatrixElements[0] PowhegMEqq2gZ2ff
#
# Drell-Yan W
# insert SubProcess:MatrixElements[0] PowhegMEqq2W2ff
# higgs + W (N.B. if considering all W decay modes useful to set )
# (jet pT cut to zero so no cut on W decay products )
# insert SubProcess:MatrixElements[0] PowhegMEPP2WH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# higgs + Z (N.B. if considering all Z decay modes useful to set )
# (jet pT cut to zero so no cut on Z decay products )
# insert SubProcess:MatrixElements[0] PowhegMEPP2ZH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# gg/qqbar -> Higgs
# insert SubProcess:MatrixElements[0] PowhegMEHiggs
#
# Weak boson pair production: WW / ZZ / WZ / W+Z [WpZ] / W-Z [WmZ]
# needs the gauge bosons decayed before the shower
# create Herwig::HwDecayHandler /Herwig/NewPhysics/DecayHandler
# set /Herwig/NewPhysics/DecayHandler:NewStep No
# insert /Herwig/NewPhysics/DecayHandler:Excluded 0 /Herwig/Particles/tau-
# insert /Herwig/NewPhysics/DecayHandler:Excluded 1 /Herwig/Particles/tau+
# insert /Herwig/EventHandlers/EventHandler:PreCascadeHandlers 0 /Herwig/NewPhysics/DecayHandler
# insert SubProcess:MatrixElements[0] PowhegMEPP2VV
# set PowhegMEPP2VV:Process WpZ
#
# Higgs production via VBF
# insert SubProcess:MatrixElements[0] PowhegMEPP2HiggsVBF
cd /Herwig/Generators
##################################################
# Useful analysis handlers for hadron-hadron physics
##################################################
# analysis of W/Z events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LHC-Powheg EventGenerator
diff --git a/src/LHC-RPV.in b/src/LHC-RPV.in
--- a/src/LHC-RPV.in
+++ b/src/LHC-RPV.in
@@ -1,98 +1,89 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the MSSM
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
# trilinear RPV
read RPV-Tri.model
cd /Herwig/NewPhysics
# example with LLE and LQD from SOFTSUSY
#set TwoBodyDC:CreateDecayModes Yes
#set ThreeBodyDC:CreateDecayModes Yes
#set WeakDecayConstructor:CreateDecayModes Yes
#setup RPV/Model RPV-TRI.slha
# example with 4-body UDD decays using input from ISASUSY
set FourBodyDC:CreateDecayModes Yes
insert FourBodyDC:Particles 0 /Herwig/Particles/~tau_1-
setup RPV/Model RPV-UDD.slha
# Bilinear RPV
#read RPV-Bi.model
#cd /Herwig/NewPhysics
#set RPV/Model:AllowedToResetSMMasses Yes
#setup RPV/Model RPV-BI.slha
##################################################
#
# This section contains the user defined settings
#
##################################################
# --- Hard Process ----
# The particle name can be found in the relevant model file
# by searching for its PDG code and noting the text
# '/Herwig/Particles/###' where the hashes denote the name
# Switch to decide whether to include EW diagrams in the
# hard process (On by default)
set HPConstructor:IncludeEW No
# Example hard process: Incoming proton, outgoing squarks
insert HPConstructor:Incoming 0 /Herwig/Particles/g
insert HPConstructor:Incoming 1 /Herwig/Particles/u
insert HPConstructor:Incoming 2 /Herwig/Particles/ubar
insert HPConstructor:Incoming 3 /Herwig/Particles/d
insert HPConstructor:Incoming 4 /Herwig/Particles/dbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/~u_L
insert HPConstructor:Outgoing 1 /Herwig/Particles/~u_Lbar
insert HPConstructor:Outgoing 2 /Herwig/Particles/~d_L
insert HPConstructor:Outgoing 3 /Herwig/Particles/~d_Lbar
erase DecayConstructor:NBodyDecayConstructors 0
erase DecayConstructor:NBodyDecayConstructors 1
# To disable a particular decay mode, add it's tag to the DisableModes
# interface of the DecayConstructor object, i.e.
#insert DecayConstructor:DisableModes 0 ~u_L->~chi_20,u;
#insert DecayConstructor:DisableModes 1 ~chi_20->~e_R-,e+;
# etc ...
# To set a minimum allowed branching fraction (the default is shown)
#set NewModel:MinimumBR 1e-6
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-RPV EventGenerator
diff --git a/src/LHC-RS.in b/src/LHC-RS.in
--- a/src/LHC-RS.in
+++ b/src/LHC-RS.in
@@ -1,67 +1,58 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Randall-Sundrum model
# in hadron collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
read RS.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton,resonant graviton
insert ResConstructor:Incoming 0 /Herwig/Particles/g
insert ResConstructor:Incoming 0 /Herwig/Particles/u
insert ResConstructor:Incoming 0 /Herwig/Particles/ubar
insert ResConstructor:Incoming 0 /Herwig/Particles/d
insert ResConstructor:Incoming 0 /Herwig/Particles/dbar
insert ResConstructor:Intermediates 0 /Herwig/Particles/Graviton
insert ResConstructor:Outgoing 0 /Herwig/Particles/e+
insert ResConstructor:Outgoing 1 /Herwig/Particles/W+
insert ResConstructor:Outgoing 2 /Herwig/Particles/Z0
insert ResConstructor:Outgoing 3 /Herwig/Particles/gamma
# coupling
set RS/Model:Lambda_pi 10000*GeV
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-RS EventGenerator
diff --git a/src/LHC-Sextet.in b/src/LHC-Sextet.in
--- a/src/LHC-Sextet.in
+++ b/src/LHC-Sextet.in
@@ -1,123 +1,114 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Sextet model
# in hadron collisions.
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read Sextet.model
cd /Herwig/NewPhysics
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton, gravition + jet
#insert HPConstructor:Incoming 0 /Herwig/Particles/g
#insert HPConstructor:Incoming 0 /Herwig/Particles/u
#insert HPConstructor:Incoming 0 /Herwig/Particles/ubar
#insert HPConstructor:Incoming 0 /Herwig/Particles/d
#insert HPConstructor:Incoming 0 /Herwig/Particles/dbar
#insert HPConstructor:Incoming 0 /Herwig/Particles/s
#insert HPConstructor:Incoming 0 /Herwig/Particles/sbar
#insert HPConstructor:Incoming 0 /Herwig/Particles/c
#insert HPConstructor:Incoming 0 /Herwig/Particles/cbar
#### Scalar DQ Singlet Y=4/3
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_1''
do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Singlet Y=4/3
#### Scalar DQ Singlet Y=1/3
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_1
do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Singlet Y=1/3
#### Scalar DQ Singlet Y=-2/3
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_1'
do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Singlet Y=-2/3
#### Scalar DQ Triplet Y=1/3
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_3+
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_30
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQPhi_3-
do /Herwig/NewPhysics/Sextet/Model:EnableParticles Scalar Triplet Y=1/3
#### Vector DQ Doublet Y=-1/6
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_1+
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_1-
do /Herwig/NewPhysics/Sextet/Model:EnableParticles Vector Doublet Y=-1/6
#### Vector DQ Doublet Y=-5/6
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_2+
insert HPConstructor:Outgoing 0 /Herwig/Particles/DQV_2-
do /Herwig/NewPhysics/Sextet/Model:EnableParticles Vector Doublet Y=5/6
#set HPConstructor:DebugME Yes
# Example hard process: Incoming proton,resonant sextet
insert ResConstructor:Incoming 0 /Herwig/Particles/u
insert ResConstructor:Outgoing 0 /Herwig/Particles/d
insert ResConstructor:Intermediates 0 /Herwig/Particles/DQPhi_1''
#insert ResConstructor:Intermediates 0 /Herwig/Particles/DQV_2+
insert ResConstructor:Outgoing 0 /Herwig/Particles/u
insert ResConstructor:Outgoing 0 /Herwig/Particles/d
#couplings
#1st generation
set Sextet/Model:g1L 0 1.0
set Sextet/Model:g1R 0 1.0
set Sextet/Model:g1RDoublePrime 0 1.0
set Sextet/Model:g1RPrime 0 1.0
set Sextet/Model:g2 0 1.0
set Sextet/Model:g2Prime 0 1.0
set Sextet/Model:g3L 0 1.0
#2nd generation
set Sextet/Model:g1L 1 1.0
set Sextet/Model:g1R 1 1.0
set Sextet/Model:g1RDoublePrime 1 1.0
set Sextet/Model:g1RPrime 1 1.0
set Sextet/Model:g2 1 1.0
set Sextet/Model:g2Prime 1 1.0
set Sextet/Model:g3L 1 1.0
#3rd generation
set Sextet/Model:g1L 2 1.0
set Sextet/Model:g1R 2 1.0
set Sextet/Model:g1RDoublePrime 2 1.0
set Sextet/Model:g1RPrime 2 1.0
set Sextet/Model:g2 2 1.0
set Sextet/Model:g2Prime 2 1.0
set Sextet/Model:g3L 2 1.0
# example to set mass
#set /Herwig/Particles/DQPhi_1'':NominalMass 1000.*GeV
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
-saverun LHC-Sextet EventGenerator
\ No newline at end of file
+saverun LHC-Sextet EventGenerator
diff --git a/src/LHC-TRP.in b/src/LHC-TRP.in
--- a/src/LHC-TRP.in
+++ b/src/LHC-TRP.in
@@ -1,65 +1,56 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LHC parameters
# usage: Herwig read LHC.in
##################################################
read snippets/PPCollider.in
cd /Herwig/Particles
create ThePEG::ParticleData graviton
setup graviton 39 graviton 0.0 0.0 0.0 0.0 0 0 0 1
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
set EventGenerator:MaxErrors 10000
##################################################
# LHC physics parameters (override defaults here)
##################################################
set EventGenerator:EventHandler:LuminosityFunction:Energy 13000.0
cd /Herwig/Cuts
#set JetKtCut:MinKT 100.0*GeV
set Cuts:MHatMin 4500*GeV
##################################################
# Matrix Elements for hadron-hadron collisions
##################################################
cd /Herwig/MatrixElements/
create Herwig::METRP2to2 METransplanck HwTransplanck.so
insert SubProcess:MatrixElements[0] METransplanck
#set METransplanck:Process 6
set METransplanck:NumberExtraDimensions 6
set METransplanck:PlanckMass 1500
cd /Herwig/Generators
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LHC-TRP EventGenerator
diff --git a/src/LHC-TTBA.in b/src/LHC-TTBA.in
--- a/src/LHC-TTBA.in
+++ b/src/LHC-TTBA.in
@@ -1,103 +1,94 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Leptoquark model
# in hadron collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read TTBA.model
#Set up semi-leptonic (e or mu) top/hadronic topbar
set /Herwig/Particles/t:Synchronized Not_synchronized
set /Herwig/Particles/tbar:Synchronized Not_synchronized
set /Herwig/Particles/t/t->b,bbar,c;:Active No
set /Herwig/Particles/t/t->b,c,dbar;:Active No
set /Herwig/Particles/t/t->b,c,sbar;:Active No
set /Herwig/Particles/t/t->b,sbar,u;:Active No
set /Herwig/Particles/t/t->b,u,dbar;:Active No
set /Herwig/Particles/t/t->nu_e,e+,b;:Active Yes
set /Herwig/Particles/t/t->nu_mu,mu+,b;:Active Yes
set /Herwig/Particles/t/t->nu_tau,tau+,b;:Active No
set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:Active Yes
set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:Active No
set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:Active No
set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:Active No
cd /Herwig/Generators
##################################################
# LHC physics parameters (override defaults here)
##################################################
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton, outgoing leptoquarks
cd /Herwig/NewPhysics
set HPConstructor:Processes Exclusive
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 1 /Herwig/Particles/ubar
insert HPConstructor:Incoming 2 /Herwig/Particles/d
insert HPConstructor:Incoming 3 /Herwig/Particles/dbar
insert HPConstructor:Incoming 4 /Herwig/Particles/s
insert HPConstructor:Incoming 5 /Herwig/Particles/sbar
insert HPConstructor:Incoming 6 /Herwig/Particles/c
insert HPConstructor:Incoming 7 /Herwig/Particles/cbar
insert HPConstructor:Incoming 8 /Herwig/Particles/b
insert HPConstructor:Incoming 9 /Herwig/Particles/bbar
insert HPConstructor:Incoming 10 /Herwig/Particles/g
# Comment out the following line if Axigluon model is selected
insert /Herwig/NewPhysics/HPConstructor:Excluded 0 /Herwig/Particles/Ag
insert HPConstructor:Outgoing 0 /Herwig/Particles/t
insert HPConstructor:Outgoing 1 /Herwig/Particles/tbar
#This is available for comparison to the LO Hw++ result
#cd /Herwig/MatrixElements
#insert SubProcess:MatrixElements[0] MEHeavyQuark
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-TTBA EventGenerator
diff --git a/src/LHC-ZP.in b/src/LHC-ZP.in
--- a/src/LHC-ZP.in
+++ b/src/LHC-ZP.in
@@ -1,125 +1,116 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Leptoquark model
# in hadron collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read Zprime.model
set /Herwig/Particles/t:Synchronized Not_synchronized
set /Herwig/Particles/tbar:Synchronized Not_synchronized
#set /Herwig/Particles/t/t->b,bbar,c;:Active Yes
#set /Herwig/Particles/t/t->b,c,dbar;:Active Yes
#set /Herwig/Particles/t/t->b,c,sbar;:Active Yes
#set /Herwig/Particles/t/t->b,sbar,u;:Active Yes
#set /Herwig/Particles/t/t->b,u,dbar;:Active Yes
#set /Herwig/Particles/t/t->nu_e,e+,b;:Active No
#set /Herwig/Particles/t/t->nu_mu,mu+,b;:Active No
#set /Herwig/Particles/t/t->nu_tau,tau+,b;:Active No
#set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:Active No
#set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:Active No
#set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:Active No
#set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:Active No
#set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:Active No
#set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:Active Yes
#set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:Active Yes
#set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:Active No
set /Herwig/Particles/t/t->b,bbar,c;:Active No
set /Herwig/Particles/t/t->b,c,dbar;:Active No
set /Herwig/Particles/t/t->b,c,sbar;:Active No
set /Herwig/Particles/t/t->b,sbar,u;:Active No
set /Herwig/Particles/t/t->b,u,dbar;:Active No
set /Herwig/Particles/t/t->nu_e,e+,b;:Active Yes
set /Herwig/Particles/t/t->nu_mu,mu+,b;:Active Yes
set /Herwig/Particles/t/t->nu_tau,tau+,b;:Active No
set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:Active Yes
set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:Active No
set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:Active No
set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:Active No
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton, outgoing leptoquarks
cd /Herwig/NewPhysics
set HPConstructor:Processes Exclusive
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 1 /Herwig/Particles/ubar
insert HPConstructor:Incoming 2 /Herwig/Particles/d
insert HPConstructor:Incoming 3 /Herwig/Particles/dbar
insert HPConstructor:Incoming 4 /Herwig/Particles/s
insert HPConstructor:Incoming 5 /Herwig/Particles/sbar
insert HPConstructor:Incoming 6 /Herwig/Particles/c
insert HPConstructor:Incoming 7 /Herwig/Particles/cbar
insert HPConstructor:Incoming 8 /Herwig/Particles/g
# Comment out the following line if Axigluon model is selected
insert /Herwig/NewPhysics/HPConstructor:Excluded 0 /Herwig/Particles/g
insert /Herwig/NewPhysics/HPConstructor:Excluded 1 /Herwig/Particles/t
insert /Herwig/NewPhysics/HPConstructor:Excluded 2 /Herwig/Particles/tbar
insert HPConstructor:Outgoing 0 /Herwig/Particles/t
insert HPConstructor:Outgoing 1 /Herwig/Particles/tbar
cd /Herwig/Analysis
set Basics:CheckQuark No
# Cuts
cd /Herwig/Cuts
set JetKtCut:MinKT 0.0*GeV
set Cuts:MHatMax 13000.0*GeV
set Cuts:MHatMin 0.0*GeV
set PhotonKtCut:MinKT 0.0*GeV
set PhotonKtCut:MinEta -10.
set PhotonKtCut:MaxEta 10.
set MassCut:MinM 0.*GeV
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun LHC-ZP EventGenerator
diff --git a/src/LHC.in b/src/LHC.in
--- a/src/LHC.in
+++ b/src/LHC.in
@@ -1,151 +1,142 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on LHC parameters
# usage: Herwig read LHC.in
##################################################
read snippets/PPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
##################################################
# LHC physics parameters (override defaults here)
##################################################
########################
## sqrt(s) = 13000 GeV ##
########################
set EventGenerator:EventHandler:LuminosityFunction:Energy 13000.0
##################################################
# Matrix Elements for hadron-hadron collisions
# (by default only gamma/Z switched on)
##################################################
cd /Herwig/MatrixElements/
#
# Electroweak boson W/Z processes
#
# Drell-Yan Z/gamma
insert SubProcess:MatrixElements[0] MEqq2gZ2ff
#
# Drell-Yan W
# insert SubProcess:MatrixElements[0] MEqq2W2ff
#
# W+jet
# insert SubProcess:MatrixElements[0] MEWJet
#
# Z+jet
# insert SubProcess:MatrixElements[0] MEZJet
#
# WW/WZ/ZZ
# insert SubProcess:MatrixElements[0] MEPP2VV
#
# Wgamma/Zgamma
# insert SubProcess:MatrixElements[0] MEPP2VGamma
#
-# add QED radiation off W/Z decay products using YFS formalism
-# cd /Herwig/EventHandlers
-# insert EventHandler:PostSubProcessHandlers[0] /Herwig/QEDRadiation/QEDRadiationHandler
+# Use old YFS formalism to add QED radiation off W/Z decay products.
+# Note: By default QED radiation is already included.
+# read snippets/YFS.in
#
# QCD and gamma processes
#
# QCD 2-2 scattering
# insert SubProcess:MatrixElements[0] MEQCD2to2
#
# gamma+jet
# insert SubProcess:MatrixElements[0] MEGammaJet
#
# gamma-gamma
# insert SubProcess:MatrixElements[0] MEGammaGamma
#
# Heavy quark processes
#
#
# top-antitop production
# insert SubProcess:MatrixElements[0] MEHeavyQuark
#
# single-top
# t-channel
# insert SubProcess:MatrixElements[0] MESingleTopTChannel
# s-channel
# insert SubProcess:MatrixElements[0] MESingleTopSChannel
# tW
# insert SubProcess:MatrixElements[0] MESingleTopTW
#
# Higgs Processes
#
#
# gg/qqbar -> Higgs (recommend including q qbar->Hg as not in ME correction)
# insert SubProcess:MatrixElements[0] MEHiggs
# insert SubProcess:MatrixElements[0] MEHiggsJet
# set MEHiggsJet:Process qqbar
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# higgs+jet
# insert SubProcess:MatrixElements[0] MEHiggsJet
#
# higgs + W (N.B. if considering all W decay modes useful to set )
# (jet pT cut to zero so no cut on W decay products )
# insert SubProcess:MatrixElements[0] MEPP2WH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# higgs + Z (N.B. if considering all Z decay modes useful to set )
# (jet pT cut to zero so no cut on Z decay products )
# insert SubProcess:MatrixElements[0] MEPP2ZH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# VBF Higgs
# insert SubProcess:MatrixElements[0] MEPP2HiggsVBF
#
# t tbar Higgs
# insert SubProcess:MatrixElements[0] MEPP2ttbarH
#
# b bbar Higgs
# insert SubProcess:MatrixElements[0] MEPP2bbbarH
cd /Herwig/Generators
##################################################
# Useful analysis handlers for hadron-hadron physics
##################################################
# analysis of W/Z events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan
# analysis of top-antitop events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/TTbar
# analysis of gamma+jet events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaJet
# analysis of gamma-gamma events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaGamma
# analysis of higgs-jet events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/HiggsJet
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun LHC EventGenerator
diff --git a/src/Matchbox/MCatNLO-Default-HardAlphaSTune.in b/src/Matchbox/MCatNLO-Default-HardAlphaSTune.in
deleted file mode 100644
--- a/src/Matchbox/MCatNLO-Default-HardAlphaSTune.in
+++ /dev/null
@@ -1,38 +0,0 @@
-# tune where the world average perutbative alphaS is used for the hard me
-# and matching and the shower alpha_S tuned seperately
-
-# shower
-
-set /Herwig/Shower/QtoQGSudakov:pTmin 1.63
-set /Herwig/Shower/GtoGGSudakov:pTmin 1.63
-set /Herwig/Shower/GtoQQbarSudakov:pTmin 1.63
-set /Herwig/Shower/GtobbbarSudakov:pTmin 1.63
-set /Herwig/Shower/GtoccbarSudakov:pTmin 1.63
-set /Herwig/Shower/QtoGQSudakov:pTmin 1.63
-set /Herwig/Shower/utoGuSudakov:pTmin 1.63
-set /Herwig/Shower/dtoGdSudakov:pTmin 1.63
-
-set /Herwig/Shower/AlphaQCD:AlphaMZ 0.135
-
-# hadronization
-set /Herwig/Hadronization/ClusterFissioner:ClMaxLight 3.46*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowLight 2.71
-set /Herwig/Hadronization/ClusterFissioner:PSplitLight 0.82
-set /Herwig/Hadronization/ClusterDecayer:ClDirLight 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrLight 0.78
-set /Herwig/Hadronization/HadronSelector:PwtSquark 0.64
-set /Herwig/Hadronization/HadronSelector:PwtDIquark 0.43
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxCharm 3.57*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowCharm 2.32
-set /Herwig/Hadronization/ClusterFissioner:PSplitCharm 1.22
-set /Herwig/Hadronization/ClusterDecayer:ClDirCharm 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrCharm 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitCharm 0.0
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxBottom 5.04*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowBottom 0.84
-set /Herwig/Hadronization/ClusterFissioner:PSplitBottom 0.79
-set /Herwig/Hadronization/ClusterDecayer:ClDirBottom 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrBottom 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitBottom 0.33
diff --git a/src/Matchbox/MCatNLO-Default-ShowerAlphaSTune.in b/src/Matchbox/MCatNLO-Default-ShowerAlphaSTune.in
deleted file mode 100644
--- a/src/Matchbox/MCatNLO-Default-ShowerAlphaSTune.in
+++ /dev/null
@@ -1,40 +0,0 @@
-# tune wherre the alphaS used for the hard me
-# and matching and the shower alpha_S are the same
-
-# shower
-
-set /Herwig/Shower/QtoQGSudakov:pTmin 1.45
-set /Herwig/Shower/GtoGGSudakov:pTmin 1.45
-set /Herwig/Shower/GtoQQbarSudakov:pTmin 1.45
-set /Herwig/Shower/GtobbbarSudakov:pTmin 1.45
-set /Herwig/Shower/GtoccbarSudakov:pTmin 1.45
-set /Herwig/Shower/QtoGQSudakov:pTmin 1.45
-set /Herwig/Shower/utoGuSudakov:pTmin 1.45
-set /Herwig/Shower/dtoGdSudakov:pTmin 1.45
-
-set /Herwig/Shower/AlphaQCD:AlphaMZ 0.132
-set /Herwig/Couplings/NLOAlphaS:input_alpha_s 0.132
-set /Herwig/Couplings/NLOAlphaS:input_scale 91.18*GeV
-
-# hadronization
-set /Herwig/Hadronization/ClusterFissioner:ClMaxLight 4.02*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowLight 2.14
-set /Herwig/Hadronization/ClusterFissioner:PSplitLight 0.81
-set /Herwig/Hadronization/ClusterDecayer:ClDirLight 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrLight 0.78
-set /Herwig/Hadronization/HadronSelector:PwtSquark 0.59
-set /Herwig/Hadronization/HadronSelector:PwtDIquark 0.29
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxCharm 3.70*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowCharm 2.35
-set /Herwig/Hadronization/ClusterFissioner:PSplitCharm 1.19
-set /Herwig/Hadronization/ClusterDecayer:ClDirCharm 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrCharm 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitCharm 0.0
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxBottom 6.24*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowBottom 0.74
-set /Herwig/Hadronization/ClusterFissioner:PSplitBottom 0.85
-set /Herwig/Hadronization/ClusterDecayer:ClDirBottom 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrBottom 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitBottom 0.12
diff --git a/src/Matchbox/MCatNLO-DefaultShower.in.in b/src/Matchbox/MCatNLO-DefaultShower.in.in
--- a/src/Matchbox/MCatNLO-DefaultShower.in.in
+++ b/src/Matchbox/MCatNLO-DefaultShower.in.in
@@ -1,30 +1,26 @@
# -*- ThePEG-repository -*-
set /Herwig/Shower/ShowerHandler:HardVetoReadOption PrimaryCollision
set /Herwig/Shower/ShowerHandler:SpinCorrelations No
set /Herwig/Shower/ShowerHandler:HardEmission MECorrection
set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption SofterFraction
set /Herwig/Shower/PartnerFinder:PartnerMethod 0
set /Herwig/Shower/PartnerFinder:ScaleChoice 0
set /Herwig/Shower/ShowerHandler:RestrictPhasespace Yes
set /Herwig/Shower/ShowerHandler:MaxPtIsMuF Yes
set /Herwig/Shower/ShowerHandler:HardScaleProfile /Herwig/MatrixElements/Matchbox/HardScaleProfile
cd /Herwig/EventHandlers
set EventHandler:CascadeHandler /Herwig/Shower/ShowerHandler
cd /Herwig/MatrixElements/Matchbox
set Factory:ShowerApproximation QTildeMatching
-# tunes
-# As of release 7.1 we are using the default tune
-#read Matchbox/MCatNLO-Default-HardAlphaSTune.in
-
cd /Herwig/Analysis
@CREATE_RIVET@ ThePEG::RivetAnalysis Rivet RivetAnalysis.so
@CREATE_HEPMC@ ThePEG::HepMCFile HepMC HepMCAnalysis.so
diff --git a/src/Matchbox/MCatNLO-Dipole-ShowerAlphaSTune.in b/src/Matchbox/MCatNLO-Dipole-ShowerAlphaSTune.in
deleted file mode 100644
--- a/src/Matchbox/MCatNLO-Dipole-ShowerAlphaSTune.in
+++ /dev/null
@@ -1,127 +0,0 @@
-# -*- ThePEG-repository -*-
-# tune wherre the alphaS used for the hard me
-# and matching and the shower alpha_S are the same
-
-##################################################
-## special scale choices
-##################################################
-
-cd /Herwig/DipoleShower/Kernels
-
-# set FFgx2ddxDipoleKernel:VirtualitySplittingScale Yes
-# set FFgx2uuxDipoleKernel:VirtualitySplittingScale Yes
-# set FFgx2ccxDipoleKernel:VirtualitySplittingScale Yes
-# set FFgx2ssxDipoleKernel:VirtualitySplittingScale Yes
-# set FFgx2bbxDipoleKernel:VirtualitySplittingScale Yes
-
-# set FIgx2ddxDipoleKernel:VirtualitySplittingScale Yes
-# set FIgx2uuxDipoleKernel:VirtualitySplittingScale Yes
-# set FIgx2ccxDipoleKernel:VirtualitySplittingScale Yes
-# set FIgx2ssxDipoleKernel:VirtualitySplittingScale Yes
-# set FIgx2bbxDipoleKernel:VirtualitySplittingScale Yes
-
-# set IFqx2gqxDipoleKernel:VirtualitySplittingScale Yes
-# set IIqx2gqxDipoleKernel:VirtualitySplittingScale Yes
-
-# Massive
-# set FFMgx2ddxDipoleKernel:VirtualitySplittingScale Yes
-# set FFMgx2uuxDipoleKernel:VirtualitySplittingScale Yes
-# set FFMgx2ccxDipoleKernel:VirtualitySplittingScale Yes
-# set FFMgx2ssxDipoleKernel:VirtualitySplittingScale Yes
-# set FFMgx2bbxDipoleKernel:VirtualitySplittingScale Yes
-
-# set FIMgx2ddxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMgx2uuxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMgx2ccxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMgx2ssxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMgx2bbxDipoleKernel:VirtualitySplittingScale Yes
-
-# set FIMDecaygx2ddxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMDecaygx2uuxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMDecaygx2ccxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMDecaygx2ssxDipoleKernel:VirtualitySplittingScale Yes
-# set FIMDecaygx2bbxDipoleKernel:VirtualitySplittingScale Yes
-
-# set IFMqx2gqxDipoleKernel:VirtualitySplittingScale Yes
-
-##################################################
-## intrinsic pt
-##################################################
-set /Herwig/DipoleShower/IntrinsicPtGenerator:ValenceIntrinsicPtScale 2.0*GeV
-set /Herwig/DipoleShower/IntrinsicPtGenerator:SeaIntrinsicPtScale 2.0*GeV
-
-##################################################
-## Dipole shower tune settings
-##################################################
-
-set /Herwig/Particles/g:ConstituentMass 0.7899848*GeV
-
-##################################################
-## (two-loop) alpha_s
-##################################################
-set /Herwig/DipoleShower/NLOAlphaS:input_alpha_s 0.139
-set /Herwig/DipoleShower/NLOAlphaS:input_scale 91.18*GeV
-set /Herwig/Couplings/NLOAlphaS:input_alpha_s 0.139
-set /Herwig/Couplings/NLOAlphaS:input_scale 91.18*GeV
-
-
-##################################################
-## cutoffs
-##################################################
-set /Herwig/DipoleShower/Kinematics/FFLightKinematics:IRCutoff 1.12*GeV
-set /Herwig/DipoleShower/Kinematics/FFMassiveKinematics:IRCutoff 1.12*GeV
-
-set /Herwig/DipoleShower/Kinematics/FILightKinematics:IRCutoff 1.12*GeV
-set /Herwig/DipoleShower/Kinematics/FIMassiveKinematics:IRCutoff 1.12*GeV
-
-set /Herwig/DipoleShower/Kinematics/IFLightKinematics:IRCutoff 1.12*GeV
-set /Herwig/DipoleShower/Kinematics/IFMassiveKinematics:IRCutoff 1.12*GeV
-
-set /Herwig/DipoleShower/Kinematics/IILightKinematics:IRCutoff 1.12*GeV
-
-set /Herwig/DipoleShower/Kinematics/FIMassiveDecayKinematics:IRCutoff 1.12*GeV
-
-## needs to be synchronized with settings above
-set /Herwig/MatrixElements/Matchbox/DipoleMatching:FFPtCut 1.12*GeV
-set /Herwig/MatrixElements/Matchbox/DipoleMatching:FIPtCut 1.12*GeV
-set /Herwig/MatrixElements/Matchbox/DipoleMatching:IIPtCut 1.12*GeV
-
-##################################################
-## hadronization parameters -- complete?
-##################################################
-cd /Herwig/Hadronization
-
-set ClusterFissioner:ClMaxLight 3.03
-set ClusterFissioner:ClPowLight 0.92
-set ClusterFissioner:PSplitLight 0.57
-set ClusterDecayer:ClDirLight 1
-set ClusterDecayer:ClSmrLight 3.118342
-
-set ClusterFissioner:ClMaxCharm 3.58*GeV
-set ClusterFissioner:ClPowCharm 2.36
-set ClusterFissioner:PSplitCharm 1.08
-set ClusterDecayer:ClDirCharm 1
-set ClusterDecayer:ClSmrCharm 0.
-set HadronSelector:SingleHadronLimitCharm 0.0
-
-set ClusterFissioner:ClMaxBottom 2.03*GeV
-set ClusterFissioner:ClPowBottom 0.67
-set ClusterFissioner:PSplitBottom 0.01
-set ClusterDecayer:ClDirBottom 1
-set ClusterDecayer:ClSmrBottom 0.
-set HadronSelector:SingleHadronLimitBottom 0.12
-
-set HadronSelector:PwtUquark 1.0
-set HadronSelector:PwtDquark 1.0
-set HadronSelector:PwtSquark 0.61
-set HadronSelector:PwtCquark 1.0
-set HadronSelector:PwtBquark 1.0
-set HadronSelector:PwtDIquark 0.46
-set HadronSelector:SngWt 1.0
-set HadronSelector:DecWt 1.0
-
-# These two options will be updated in the 7.1.1 tune
-set ColourReconnector:OctetTreatment 0
-set HadronSelector:BelowThreshold 0
-
-cd /
diff --git a/src/Matchbox/Makefile.am b/src/Matchbox/Makefile.am
--- a/src/Matchbox/Makefile.am
+++ b/src/Matchbox/Makefile.am
@@ -1,69 +1,64 @@
BUILT_SOURCES = done-all-links
Matchboxdir = ${pkgdatadir}/Matchbox
INPUTFILES = \
DefaultEEJets.in \
DefaultEPJets.in \
DefaultPPJets.in \
DiagonalCKM.in \
FiveFlavourNoBMassScheme.in \
FiveFlavourScheme.in \
FourFlavourScheme.in \
GoSam-GoSam.in \
HiggsEffective.in \
HJets.in \
IdentifiedBs.in \
InclusiveDurhamJets.in \
IncreaseVerbosity.in \
KrkNLO-DipoleShower.in \
LO-DefaultShower.in \
LO-DipoleShower.in \
LO.in \
LO-NoShower.in \
MadGraph-GoSam.in \
MadGraph-MadGraph.in \
MadGraph-NJet.in \
MadGraph-OpenLoops.in \
MCatLO-DefaultShower.in \
MCatLO-DipoleShower.in \
-MCatNLO-Default-HardAlphaSTune.in \
-MCatNLO-Default-ShowerAlphaSTune.in \
MCatNLO-DefaultShower.in \
MCatNLO-Dipole-HardAlphaSTune.in \
-MCatNLO-Dipole-ShowerAlphaSTune.in \
MCatNLO-DipoleShower.in \
MMHT2014.in \
MuDown.in \
MuQDown.in \
MuQUp.in \
MuUp.in \
NJet-NJet.in \
NLO-NoShower.in \
NonDiagonalCKM.in \
OnShellHProduction.in \
OnShellTopProduction.in \
OnShellWProduction.in \
OnShellZProduction.in \
OpenLoops-OpenLoops.in \
-Powheg-Default-HardAlphaSTune.in \
-Powheg-Default-ShowerAlphaSTune.in \
Powheg-DefaultShower.in \
Powheg-DipoleShower.in \
Powheg.in \
PQCDLevel.in \
StandardModelLike.in \
VBFDiagramsOnly.in \
VBFNLO.in \
VBFNLOPhasespace.in
dist_Matchbox_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/Matchbox/NJet-NJet.in b/src/Matchbox/NJet-NJet.in
--- a/src/Matchbox/NJet-NJet.in
+++ b/src/Matchbox/NJet-NJet.in
@@ -1,11 +1,11 @@
# -*- ThePEG-repository -*-
# NJet as the one and only matrix element provider
cd /Herwig/MatrixElements/Matchbox/Amplitudes
clear /Herwig/MatrixElements/Matchbox/Factory:Amplitudes
insert /Herwig/MatrixElements/Matchbox/Factory:Amplitudes 0 NJet
clear /Herwig/Merging/MergingFactory:Amplitudes
-insert /Herwig/Merging/MergingFactory:Amplitudes 0 NJets
+insert /Herwig/Merging/MergingFactory:Amplitudes 0 NJet
diff --git a/src/Matchbox/Powheg-Default-HardAlphaSTune.in b/src/Matchbox/Powheg-Default-HardAlphaSTune.in
deleted file mode 100644
--- a/src/Matchbox/Powheg-Default-HardAlphaSTune.in
+++ /dev/null
@@ -1,38 +0,0 @@
-# tune where the world average perutbative alphaS is used for the hard me
-# and matching and the shower alpha_S tuned seperately
-# shower
-
-set /Herwig/Shower/QtoQGSudakov:pTmin 1.78
-set /Herwig/Shower/GtoGGSudakov:pTmin 1.78
-set /Herwig/Shower/GtoQQbarSudakov:pTmin 1.78
-set /Herwig/Shower/GtobbbarSudakov:pTmin 1.78
-set /Herwig/Shower/GtoccbarSudakov:pTmin 1.78
-set /Herwig/Shower/QtoGQSudakov:pTmin 1.78
-set /Herwig/Shower/utoGuSudakov:pTmin 1.78
-set /Herwig/Shower/dtoGdSudakov:pTmin 1.78
-
-set /Herwig/Shower/AlphaQCD:AlphaMZ 0.136
-
-# hadronization
-set /Herwig/Hadronization/ClusterFissioner:ClMaxLight 3.57*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowLight 1.97
-set /Herwig/Hadronization/ClusterFissioner:PSplitLight 0.93
-set /Herwig/Hadronization/ClusterDecayer:ClDirLight 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrLight 0.78
-set /Herwig/Hadronization/HadronSelector:PwtSquark 0.53
-set /Herwig/Hadronization/HadronSelector:PwtDIquark 0.26
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxCharm 3.95*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowCharm 2.10
-set /Herwig/Hadronization/ClusterFissioner:PSplitCharm 1.19
-set /Herwig/Hadronization/ClusterDecayer:ClDirCharm 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrCharm 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitCharm 0.0
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxBottom 4.79*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowBottom 0.77
-set /Herwig/Hadronization/ClusterFissioner:PSplitBottom 0.44
-set /Herwig/Hadronization/ClusterDecayer:ClDirBottom 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrBottom 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitBottom 0.
-
diff --git a/src/Matchbox/Powheg-Default-ShowerAlphaSTune.in b/src/Matchbox/Powheg-Default-ShowerAlphaSTune.in
deleted file mode 100644
--- a/src/Matchbox/Powheg-Default-ShowerAlphaSTune.in
+++ /dev/null
@@ -1,40 +0,0 @@
-# tune wherre the alphaS used for the hard me
-# and matching and the shower alpha_S are the same
-
-# shower
-
-set /Herwig/Shower/QtoQGSudakov:pTmin 1.36
-set /Herwig/Shower/GtoGGSudakov:pTmin 1.36
-set /Herwig/Shower/GtoQQbarSudakov:pTmin 1.36
-set /Herwig/Shower/GtobbbarSudakov:pTmin 1.36
-set /Herwig/Shower/GtoccbarSudakov:pTmin 1.36
-set /Herwig/Shower/QtoGQSudakov:pTmin 1.36
-set /Herwig/Shower/utoGuSudakov:pTmin 1.36
-set /Herwig/Shower/dtoGdSudakov:pTmin 1.36
-
-set /Herwig/Shower/AlphaQCD:AlphaMZ 0.124
-set /Herwig/Couplings/NLOAlphaS:input_alpha_s 0.124
-set /Herwig/Couplings/NLOAlphaS:input_scale 91.18*GeV
-
-# hadronization
-set /Herwig/Hadronization/ClusterFissioner:ClMaxLight 3.71*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowLight 2.44
-set /Herwig/Hadronization/ClusterFissioner:PSplitLight 0.88
-set /Herwig/Hadronization/ClusterDecayer:ClDirLight 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrLight 0.78
-set /Herwig/Hadronization/HadronSelector:PwtSquark 0.55
-set /Herwig/Hadronization/HadronSelector:PwtDIquark 0.36
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxCharm 3.56*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowCharm 2.10
-set /Herwig/Hadronization/ClusterFissioner:PSplitCharm 1.30
-set /Herwig/Hadronization/ClusterDecayer:ClDirCharm 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrCharm 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitCharm 0.0
-
-set /Herwig/Hadronization/ClusterFissioner:ClMaxBottom 5.60*GeV
-set /Herwig/Hadronization/ClusterFissioner:ClPowBottom 1.01
-set /Herwig/Hadronization/ClusterFissioner:PSplitBottom 0.31
-set /Herwig/Hadronization/ClusterDecayer:ClDirBottom 1
-set /Herwig/Hadronization/ClusterDecayer:ClSmrBottom 0.
-set /Herwig/Hadronization/HadronSelector:SingleHadronLimitBottom 0.12
diff --git a/src/Matchbox/Powheg-DefaultShower.in.in b/src/Matchbox/Powheg-DefaultShower.in.in
--- a/src/Matchbox/Powheg-DefaultShower.in.in
+++ b/src/Matchbox/Powheg-DefaultShower.in.in
@@ -1,30 +1,26 @@
# -*- ThePEG-repository -*-
read Matchbox/Powheg.in
set /Herwig/Shower/PowhegShowerHandler:HardVetoReadOption PrimaryCollision
set /Herwig/Shower/PowhegShowerHandler:SpinCorrelations No
set /Herwig/Shower/KinematicsReconstructor:InitialStateReconOption SofterFraction
set /Herwig/Shower/PartnerFinder:PartnerMethod 0
set /Herwig/Shower/PartnerFinder:ScaleChoice 0
set /Herwig/Shower/PowhegShowerHandler:RestrictPhasespace Yes
set /Herwig/Shower/PowhegShowerHandler:MaxPtIsMuF Yes
set /Herwig/Shower/PowhegShowerHandler:HardScaleProfile NULL
cd /Herwig/EventHandlers
set EventHandler:CascadeHandler /Herwig/Shower/PowhegShowerHandler
cd /Herwig/Shower
set PowhegShowerHandler:HardEmission POWHEG
-# tunes
-# As of release 7.1 we are using the default tune
-#read Matchbox/Powheg-Default-HardAlphaSTune.in
-
cd /Herwig/Analysis
@CREATE_RIVET@ ThePEG::RivetAnalysis Rivet RivetAnalysis.so
@CREATE_HEPMC@ ThePEG::HepMCFile HepMC HepMCAnalysis.so
diff --git a/src/Merging/LEP-Merging.in b/src/Merging/LEP-Merging.in
--- a/src/Merging/LEP-Merging.in
+++ b/src/Merging/LEP-Merging.in
@@ -1,152 +1,156 @@
# -*- ThePEG-repository -*-
##################################################
## Herwig/Merging example input file
##################################################
##################################################
## Collider type
##################################################
read snippets/DipoleMerging.in
read snippets/EECollider.in
read snippets/MonacoSampler.in
##################################################
## Beam energy sqrt(s)
##################################################
cd /Herwig/EventHandlers
set EventHandler:LuminosityFunction:Energy 91.2*GeV
##################################################
## Process selection
##################################################
## Note that event generation may fail if no matching matrix element has
## been found. Coupling orders are with respect to the Born process,
## i.e. NLO QCD does not require an additional power of alphas.
## Model assumptions
read Matchbox/StandardModelLike.in
read Matchbox/DiagonalCKM.in
## Set the order of the couplings
cd /Herwig/Merging
set MergingFactory:OrderInAlphaS 0
set MergingFactory:OrderInAlphaEW 2
## Select the process
## You may use identifiers such as p, pbar, j, l, mu+, h0 etc.
do MergingFactory:Process e- e+ -> j j [ j j ]
set MergingFactory:NLOProcesses 2
set Merger:MergingScale 4.*GeV
set Merger:MergingScaleSmearing 0.1
cd /Herwig/MatrixElements/Matchbox/Utility
insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma
## Special settings required for on-shell production of unstable particles
## enable for on-shell top production
# read Matchbox/OnShellTopProduction.in
## enable for on-shell W, Z or h production
# read Matchbox/OnShellWProduction.in
# read Matchbox/OnShellZProduction.in
# read Matchbox/OnShellHProduction.in
##################################################
## Matrix element library selection
##################################################
## Select a generic tree/loop combination or a
## specialized NLO package
## As massive b-quarks are currently not supported by the
## build in ME an external ME-Provider is needed (e.g. MG+OL).
# read Matchbox/MadGraph-GoSam.in
# read Matchbox/MadGraph-MadGraph.in
# read Matchbox/MadGraph-NJet.in
read Matchbox/MadGraph-OpenLoops.in
##################################################
## Cut selection
## See the documentation for more options
##################################################
## cuts on additional jets
cd /Herwig/Cuts
# read Matchbox/DefaultEEJets.in
# set NJetsCut:NJetsMin 3
##################################################
## Scale choice
## See the documentation for more options
##################################################
cd /Herwig/MatrixElements/Matchbox/Scales/
set /Herwig/Merging/MergingFactory:ScaleChoice SHatScale
##################################################
## Scale uncertainties
##################################################
# read Matchbox/MuDown.in
# read Matchbox/MuUp.in
##################################################
## Shower scale uncertainties
##################################################
# read Matchbox/MuQDown.in
# read Matchbox/MuQUp.in
##################################################
## CMW - Scheme
##################################################
read Merging/Merging-Dipole-FactorCMWSchemeTune.in
### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q)
### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf))
read Merging/FactorCMWScheme.in
### Linear CMW multiplication:
### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi )
# read Merging/LinearCMWScheme.in
##################################################
## Analyses
##################################################
cd /Herwig/Analysis
-insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet
+## Write HepMC events. Modify the PrintEvent interface for your needs.
# insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMCFile
+## Setup the Rivet analysis:
+#read snippets/Rivet.in
+#insert Rivet:Analyses 0 XXX_2017_ABC123
-# Here we collected a various Rivet analysis for LEP
-# at the Z Mass. (The collection might not be complete.)
-read Merging/LEP91-Analysis.in
+## Here we collected a various Rivet analysis for LEP
+## at the Z Mass. (The collection might not be complete.)
+
+# read Merging/LEP91-Analysis.in
##################################################
## Do not apply profile scales for LEP as hard
## scale coincides with kinematic limit
##################################################
set /Herwig/Shower/ShowerHandler:HardScaleProfile NULL
set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleProfile NULL
##################################################
## Save the generator
##################################################
do /Herwig/Merging/MergingFactory:ProductionMode
cd /Herwig/Generators
saverun LEP-Merging EventGenerator
diff --git a/src/Merging/LHC-H-Merging.in b/src/Merging/LHC-H-Merging.in
--- a/src/Merging/LHC-H-Merging.in
+++ b/src/Merging/LHC-H-Merging.in
@@ -1,191 +1,194 @@
# -*- ThePEG-repository -*-
##################################################
## Herwig/Merging example input file
##################################################
##################################################
## Collider type
##################################################
read snippets/DipoleMerging.in
read snippets/PPCollider.in
read snippets/MonacoSampler.in
##################################################
## Beam energy sqrt(s)
##################################################
cd /Herwig/EventHandlers
set EventHandler:LuminosityFunction:Energy 8000*GeV
##################################################
## Process selection
##################################################
## Note that event generation may fail if no matching matrix element has
## been found. Coupling orders are with respect to the Born process,
## i.e. NLO QCD does not require an additional power of alphas.
## Model assumptions
read Matchbox/StandardModelLike.in
read Matchbox/DiagonalCKM.in
## Set the order of the couplings
cd /Herwig/Merging
set MergingFactory:OrderInAlphaS 2
set MergingFactory:OrderInAlphaEW 1
## Select the process
## You may use identifiers such as p, pbar, j, l, mu+, h0 etc.
do MergingFactory:Process p p -> h0 [ j j ]
set MergingFactory:NLOProcesses 2
# Set the merging scale deviding the parton shower
# from the matrix element region in phase space.
set Merger:MergingScale 15.*GeV
set Merger:MergingScaleSmearing 0.1
# The following line clear a preweighter
# that is not working for Higgs as here
# pt and HT are 0 before the shower.
# See other merging files for more information.
clear MergingFactory:Preweighters
# The next line can switch of hadronization
# and MPI modelling. Use with care!!
# read Matchbox/PQCDLevel.in
## Special settings required for on-shell production of unstable particles
## enable for on-shell top production
# read Matchbox/OnShellTopProduction.in
## enable for on-shell W, Z or h production
# read Matchbox/OnShellWProduction.in
# read Matchbox/OnShellZProduction.in
read Matchbox/OnShellHProduction.in
set /Herwig/Particles/h0:Stable Stable
# Special settings for the VBF approximation
# read Matchbox/VBFDiagramsOnly.in
##################################################
## Matrix element library selection
##################################################
## Select a generic tree/loop combination or a
## specialized NLO package
# read Matchbox/MadGraph-GoSam.in
# read Matchbox/MadGraph-MadGraph.in
# read Matchbox/MadGraph-NJet.in
read Matchbox/MadGraph-OpenLoops.in
#read Matchbox/HJets.in
# read Matchbox/VBFNLO.in
## Uncomment this to use ggh effective couplings
## currently only supported by MadGraph-GoSam and
## MadGraph-Openloops
#read Matchbox/HiggsEffective.in
cd /Herwig/MatrixElements/Matchbox/Amplitudes
set OpenLoops:HiggsEff Yes
set MadGraph:Model heft
##################################################
## Cut selection
## See the documentation for more options
##################################################
cd /Herwig/Cuts/
set ChargedLeptonPairMassCut:MinMass 60*GeV
set ChargedLeptonPairMassCut:MaxMass 120*GeV
cd /Herwig/MatrixElements/Matchbox/Utility
insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma
## cuts on additional jets
cd /Herwig/Cuts/
# read Matchbox/DefaultPPJets.in
# insert JetCuts:JetRegions 0 FirstJet
# insert JetCuts:JetRegions 1 SecondJet
# insert JetCuts:JetRegions 2 ThirdJet
# insert JetCuts:JetRegions 3 FourthJet
##################################################
## Scale choice
## See the documentation for more options
##################################################
cd /Herwig/MatrixElements/Matchbox/Scales/
set /Herwig/Merging/MergingFactory:ScaleChoice FixedScale
set FixedScale:FixedScale 125.*GeV
##################################################
## Scale uncertainties
##################################################
# read Matchbox/MuDown.in
# read Matchbox/MuUp.in
##################################################
## Shower scale uncertainties
##################################################
# read Matchbox/MuQDown.in
# read Matchbox/MuQUp.in
##################################################
## CMW - Scheme
##################################################
read Merging/Merging-Dipole-FactorCMWSchemeTune.in
### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q)
### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf))
read Merging/FactorCMWScheme.in
### Linear CMW multiplication:
### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi )
# read Merging/LinearCMWScheme.in
##################################################
## PDF choice
##################################################
read Matchbox/FiveFlavourNoBMassScheme.in
read Matchbox/MMHT2014.in
##################################################
## Analyses
##################################################
cd /Herwig/Analysis
-insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet
+## Write HepMC events. Modify the PrintEvent interface for your needs.
# insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMCFile
+## Setup the Rivet analysis:
+#read snippets/Rivet.in
+#insert Rivet:Analyses 0 XXX_2017_ABC123
-# Here we collected a various Rivet analysis for Higgs at LHC
-# at the 8 TeV. (The collection might not be complete.)
-read Merging/LHC8-H-Analysis.in
+## Here we collected a various Rivet analysis for Higgs at LHC
+## at the 8 TeV. (The collection might not be complete.)
+# read Merging/LHC8-H-Analysis.in
##################################################
## Save the generator
##################################################
do /Herwig/Merging/MergingFactory:ProductionMode
set /Herwig/Generators/EventGenerator:IntermediateOutput Yes
cd /Herwig/Generators
saverun LHC-H-Merging EventGenerator
diff --git a/src/Merging/LHC-J-Merging.in b/src/Merging/LHC-J-Merging.in
--- a/src/Merging/LHC-J-Merging.in
+++ b/src/Merging/LHC-J-Merging.in
@@ -1,188 +1,191 @@
# -*- ThePEG-repository -*-
##################################################
## Herwig/Merging example input file
##################################################
##################################################
## Collider type
##################################################
read snippets/DipoleMerging.in
read snippets/PPCollider.in
read snippets/MonacoSampler.in
##################################################
## Beam energy sqrt(s)
##################################################
cd /Herwig/EventHandlers
set EventHandler:LuminosityFunction:Energy 7000*GeV
##################################################
## Process selection
##################################################
## Note that event generation may fail if no matching matrix element has
## been found. Coupling orders are with respect to the Born process,
## i.e. NLO QCD does not require an additional power of alphas.
## Model assumptions
read Matchbox/StandardModelLike.in
read Matchbox/DiagonalCKM.in
## Set the order of the couplings
cd /Herwig/Merging
set MergingFactory:OrderInAlphaS 2
set MergingFactory:OrderInAlphaEW 0
## Select the process
## You may use identifiers such as p, pbar, j, l, mu+, h0 etc.
do MergingFactory:Process p p -> j j [ j ]
set MergingFactory:NLOProcesses 1
# Set the merging scale deviding the parton shower
# from the matrix element region in phase space.
set Merger:MergingScale 20.*GeV
set Merger:MergingScaleSmearing 0.1
# The following lines control a preweighter,
# that can be used to force more events in higher
# HT or pt regions. The unweighted events are accepted
# with a enhanced probability W, that is divided fron the
# event weight once the event is accepted.
# W = ((HT/scale)^HTPower + (pt_max/scale)^MaxPTPower)
# with scale = MZ (can be changed)
# Note that the weights will therefore differ from "1"
# if the powers are not zero.
set MPreWeight:HTPower 0
set MPreWeight:MaxPTPower 0
set MPreWeight:OnlyColoured No
# The next line can switch of hadronization
# and MPI modelling. Use with care!!
# read Matchbox/PQCDLevel.in
## Special settings required for on-shell production of unstable particles
## enable for on-shell top production
# read Matchbox/OnShellTopProduction.in
## enable for on-shell W, Z or h production
# read Matchbox/OnShellWProduction.in
# read Matchbox/OnShellZProduction.in
# read Matchbox/OnShellHProduction.in
# Special settings for the VBF approximation
# read Matchbox/VBFDiagramsOnly.in
##################################################
## Matrix element library selection
##################################################
## Select a generic tree/loop combination or a
## specialized NLO package
# read Matchbox/MadGraph-GoSam.in
# read Matchbox/MadGraph-MadGraph.in
# read Matchbox/MadGraph-NJet.in
read Matchbox/MadGraph-OpenLoops.in
# read Matchbox/HJets.in
# read Matchbox/VBFNLO.in
## Uncomment this to use ggh effective couplings
## currently only supported by MadGraph-GoSam
## and MadGraph-OpenLoops
# read Matchbox/HiggsEffective.in
##################################################
## Cut selection
## See the documentation for more options
##################################################
cd /Herwig/Cuts/
set ChargedLeptonPairMassCut:MinMass 60*GeV
set ChargedLeptonPairMassCut:MaxMass 120*GeV
cd /Herwig/MatrixElements/Matchbox/Utility
insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma
## cuts on additional jets
cd /Herwig/Cuts/
read Matchbox/DefaultPPJets.in
insert JetCuts:JetRegions 0 FirstJet
# insert JetCuts:JetRegions 1 SecondJet
# insert JetCuts:JetRegions 2 ThirdJet
# insert JetCuts:JetRegions 3 FourthJet
##################################################
## Scale choice
## See the documentation for more options
##################################################
cd /Herwig/MatrixElements/Matchbox/Scales/
set /Herwig/Merging/MergingFactory:ScaleChoice MaxJetPtScale
##################################################
## Scale uncertainties
##################################################
# read Matchbox/MuDown.in
# read Matchbox/MuUp.in
##################################################
## Shower scale uncertainties
##################################################
# read Matchbox/MuQDown.in
# read Matchbox/MuQUp.in
##################################################
## CMW - Scheme
##################################################
read Merging/Merging-Dipole-FactorCMWSchemeTune.in
### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q)
### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf))
read Merging/FactorCMWScheme.in
### Linear CMW multiplication:
### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi )
# read Merging/LinearCMWScheme.in
##################################################
## PDF choice
##################################################
read Matchbox/FiveFlavourNoBMassScheme.in
read Matchbox/MMHT2014.in
##################################################
## Analyses
##################################################
cd /Herwig/Analysis
-insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet
+## Write HepMC events. Modify the PrintEvent interface for your needs.
# insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMCFile
+## Setup the Rivet analysis:
+#read snippets/Rivet.in
+#insert Rivet:Analyses 0 XXX_2017_ABC123
-# Here we collected a various Rivet analysis for Jets at LHC
-# at the 7 TeV. (The collection might not be complete.)
-read Merging/LHC7-J-Analysis.in
+## Here we collected a various Rivet analysis for Jets at LHC
+## at the 7 TeV. (The collection might not be complete.)
+# read Merging/LHC7-J-Analysis.in
##################################################
## Save the generator
##################################################
do /Herwig/Merging/MergingFactory:ProductionMode
set /Herwig/Generators/EventGenerator:IntermediateOutput Yes
cd /Herwig/Generators
saverun LHC-J-Merging EventGenerator
diff --git a/src/Merging/LHC-T-Merging.in b/src/Merging/LHC-T-Merging.in
--- a/src/Merging/LHC-T-Merging.in
+++ b/src/Merging/LHC-T-Merging.in
@@ -1,190 +1,193 @@
# -*- ThePEG-repository -*-
##################################################
## Herwig/Merging example input file
##################################################
##################################################
## Collider type
##################################################
read snippets/DipoleMerging.in
read snippets/PPCollider.in
read snippets/MonacoSampler.in
##################################################
## Beam energy sqrt(s)
##################################################
cd /Herwig/EventHandlers
set EventHandler:LuminosityFunction:Energy 7000*GeV
##################################################
## Process selection
##################################################
## Note that event generation may fail if no matching matrix element has
## been found. Coupling orders are with respect to the Born process,
## i.e. NLO QCD does not require an additional power of alphas.
## Model assumptions
read Matchbox/StandardModelLike.in
read Matchbox/DiagonalCKM.in
## Set the order of the couplings
cd /Herwig/Merging
set MergingFactory:OrderInAlphaS 2
set MergingFactory:OrderInAlphaEW 0
## Select the process
## You may use identifiers such as p, pbar, j, l, mu+, h0 etc.
do MergingFactory:Process p p -> t tbar [ j]
set MergingFactory:NLOProcesses 1
# Set the merging scale deviding the parton shower
# from the matrix element region in phase space.
set Merger:MergingScale 20.*GeV
set Merger:MergingScaleSmearing 0.1
# The following lines control a preweighter,
# that can be used to force more events in higher
# HT or pt regions. The unweighted events are accepted
# with a enhanced probability W, that is divided fron the
# event weight once the event is accepted.
# W = ((HT/scale)^HTPower + (pt_max/scale)^MaxPTPower)
# with scale = MZ (can be changed)
# Note that the weights will therefore differ from "1"
# if the powers are not zero.
set MPreWeight:HTPower 0
set MPreWeight:MaxPTPower 0
set MPreWeight:OnlyColoured No
# The next line can switch of hadronization
# and MPI modelling. Use with care!!
# read Matchbox/PQCDLevel.in
## Special settings required for on-shell production of unstable particles
## enable for on-shell top production
read Matchbox/OnShellTopProduction.in
## enable for on-shell W, Z or h production
# read Matchbox/OnShellWProduction.in
# read Matchbox/OnShellZProduction.in
# read Matchbox/OnShellHProduction.in
# Special settings for the VBF approximation
# read Matchbox/VBFDiagramsOnly.in
##################################################
## Matrix element library selection
##################################################
## Select a generic tree/loop combination or a
## specialized NLO package
# read Matchbox/MadGraph-GoSam.in
# read Matchbox/MadGraph-MadGraph.in
# read Matchbox/MadGraph-NJet.in
read Matchbox/MadGraph-OpenLoops.in
# read Matchbox/HJets.in
# read Matchbox/VBFNLO.in
## Uncomment this to use ggh effective couplings
## currently only supported by MadGraph-GoSam and
## MadGraph-Openloops
# read Matchbox/HiggsEffective.in
##################################################
## Cut selection
## See the documentation for more options
##################################################
cd /Herwig/Cuts/
set ChargedLeptonPairMassCut:MinMass 60*GeV
set ChargedLeptonPairMassCut:MaxMass 120*GeV
cd /Herwig/MatrixElements/Matchbox/Utility
insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma
## cuts on additional jets
cd /Herwig/Cuts/
# read Matchbox/DefaultPPJets.in
# insert JetCuts:JetRegions 0 FirstJet
# insert JetCuts:JetRegions 1 SecondJet
# insert JetCuts:JetRegions 2 ThirdJet
# insert JetCuts:JetRegions 3 FourthJet
##################################################
## Scale choice
## See the documentation for more options
##################################################
cd /Herwig/MatrixElements/Matchbox/Scales/
set /Herwig/Merging/MergingFactory:ScaleChoice TopPairMassScale
##################################################
## Scale uncertainties
##################################################
# read Matchbox/MuDown.in
# read Matchbox/MuUp.in
##################################################
## Shower scale uncertainties
##################################################
# read Matchbox/MuQDown.in
# read Matchbox/MuQUp.in
##################################################
## CMW - Scheme
##################################################
read Merging/Merging-Dipole-FactorCMWSchemeTune.in
### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q)
### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf))
read Merging/FactorCMWScheme.in
### Linear CMW multiplication:
### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi )
# read Merging/LinearCMWScheme.in
##################################################
## PDF choice
##################################################
read Matchbox/FiveFlavourNoBMassScheme.in
read Matchbox/MMHT2014.in
##################################################
## Analyses
##################################################
cd /Herwig/Analysis
-insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet
+## Write HepMC events. Modify the PrintEvent interface for your needs.
# insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMCFile
+## Setup the Rivet analysis:
+#read snippets/Rivet.in
+#insert Rivet:Analyses 0 XXX_2017_ABC123
-# Here we collected a various Rivet analysis for Tops at LHC
-# at the 7 TeV. (The collection might not be complete.)
-read Merging/LHC7-T-Analysis.in
+## Here we collected a various Rivet analysis for Tops at LHC
+## at the 7 TeV. (The collection might not be complete.)
+# read Merging/LHC7-T-Analysis.in
##################################################
## Save the generator
##################################################
do /Herwig/Merging/MergingFactory:ProductionMode
set /Herwig/Generators/EventGenerator:IntermediateOutput Yes
cd /Herwig/Generators
saverun LHC-T-Merging EventGenerator
diff --git a/src/Merging/LHC-W-Merging.in b/src/Merging/LHC-W-Merging.in
--- a/src/Merging/LHC-W-Merging.in
+++ b/src/Merging/LHC-W-Merging.in
@@ -1,191 +1,194 @@
# -*- ThePEG-repository -*-
##################################################
## Herwig/Merging example input file
##################################################
##################################################
## Collider type
##################################################
read snippets/DipoleMerging.in
read snippets/PPCollider.in
read snippets/MonacoSampler.in
##################################################
## Beam energy sqrt(s)
##################################################
cd /Herwig/EventHandlers
set EventHandler:LuminosityFunction:Energy 7000*GeV
##################################################
## Process selection
##################################################
## Note that event generation may fail if no matching matrix element has
## been found. Coupling orders are with respect to the Born process,
## i.e. NLO QCD does not require an additional power of alphas.
## Model assumptions
read Matchbox/StandardModelLike.in
read Matchbox/DiagonalCKM.in
## Set the order of the couplings
cd /Herwig/Merging
set MergingFactory:OrderInAlphaS 0
set MergingFactory:OrderInAlphaEW 2
## Select the process
## You may use identifiers such as p, pbar, j, l, mu+, h0 etc.
do MergingFactory:Process p p -> l nu [ j j ]
set MergingFactory:NLOProcesses 2
# Set the merging scale deviding the parton shower
# from the matrix element region in phase space.
set Merger:MergingScale 15.*GeV
set Merger:MergingScaleSmearing 0.1
# The following lines control a preweighter,
# that can be used to force more events in higher
# HT or pt regions. The unweighted events are accepted
# with a enhanced probability W, that is divided fron the
# event weight once the event is accepted.
# W = ((HT/scale)^HTPower + (pt_max/scale)^MaxPTPower)
# with scale = MZ (can be changed)
# Note that the weights will therefore differ from "1"
# if the powers are not zero.
set MPreWeight:HTPower 0
set MPreWeight:MaxPTPower 0
set MPreWeight:OnlyColoured No
# The next line can switch of hadronization
# and MPI modelling. Use with care!!
# read Matchbox/PQCDLevel.in
## Special settings required for on-shell production of unstable particles
## enable for on-shell top production
# read Matchbox/OnShellTopProduction.in
## enable for on-shell W, Z or h production
# read Matchbox/OnShellWProduction.in
# read Matchbox/OnShellZProduction.in
# read Matchbox/OnShellHProduction.in
# Special settings for the VBF approximation
# read Matchbox/VBFDiagramsOnly.in
##################################################
## Matrix element library selection
##################################################
## Select a generic tree/loop combination or a
## specialized NLO package
# read Matchbox/MadGraph-GoSam.in
# read Matchbox/MadGraph-MadGraph.in
# read Matchbox/MadGraph-NJet.in
# read Matchbox/MadGraph-OpenLoops.in
# read Matchbox/HJets.in
# read Matchbox/VBFNLO.in
## Uncomment this to use ggh effective couplings
## currently only supported by MadGraph-GoSam and
## MadGraph-Openloops
# read Matchbox/HiggsEffective.in
##################################################
## Cut selection
## See the documentation for more options
##################################################
cd /Herwig/Cuts/
set /Herwig/Cuts/LeptonPairMassCut:MinMass 60*GeV
set /Herwig/Cuts/LeptonPairMassCut:MaxMass 120*GeV
cd /Herwig/MatrixElements/Matchbox/Utility
insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma
## cuts on additional jets
cd /Herwig/Cuts/
# read Matchbox/DefaultPPJets.in
# insert JetCuts:JetRegions 0 FirstJet
# insert JetCuts:JetRegions 1 SecondJet
# insert JetCuts:JetRegions 2 ThirdJet
# insert JetCuts:JetRegions 3 FourthJet
##################################################
## Scale choice
## See the documentation for more options
##################################################
cd /Herwig/MatrixElements/Matchbox/Scales/
set /Herwig/Merging/MergingFactory:ScaleChoice LeptonPairMassScale
##################################################
## Scale uncertainties
##################################################
# read Matchbox/MuDown.in
# read Matchbox/MuUp.in
##################################################
## Shower scale uncertainties
##################################################
# read Matchbox/MuQDown.in
# read Matchbox/MuQUp.in
##################################################
## CMW - Scheme
##################################################
read Merging/Merging-Dipole-FactorCMWSchemeTune.in
### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q)
### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf))
read Merging/FactorCMWScheme.in
### Linear CMW multiplication:
### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi )
# read Merging/LinearCMWScheme.in
##################################################
## PDF choice
##################################################
read Matchbox/FiveFlavourNoBMassScheme.in
read Matchbox/MMHT2014.in
##################################################
## Analyses
##################################################
cd /Herwig/Analysis
-insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet
+## Write HepMC events. Modify the PrintEvent interface for your needs.
# insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMCFile
+## Setup the Rivet analysis:
+#read snippets/Rivet.in
+#insert Rivet:Analyses 0 XXX_2017_ABC123
-# Here we collected a various Rivet analysis for Ws at LHC
-# at the 7 TeV. (The collection might not be complete.)
-read Merging/LHC7-W-Analysis.in
+## Here we collected a various Rivet analysis for Ws at LHC
+## at the 7 TeV. (The collection might not be complete.)
+# read Merging/LHC7-W-Analysis.in
##################################################
## Save the generator
##################################################
do /Herwig/Merging/MergingFactory:ProductionMode
set /Herwig/Generators/EventGenerator:IntermediateOutput Yes
cd /Herwig/Generators
saverun LHC-W-Merging EventGenerator
diff --git a/src/Merging/LHC-Z-Merging.in b/src/Merging/LHC-Z-Merging.in
--- a/src/Merging/LHC-Z-Merging.in
+++ b/src/Merging/LHC-Z-Merging.in
@@ -1,191 +1,194 @@
# -*- ThePEG-repository -*-
##################################################
## Herwig/Merging example input file
##################################################
##################################################
## Collider type
##################################################
read snippets/DipoleMerging.in
read snippets/PPCollider.in
read snippets/MonacoSampler.in
##################################################
## Beam energy sqrt(s)
##################################################
cd /Herwig/EventHandlers
set EventHandler:LuminosityFunction:Energy 7000*GeV
##################################################
## Process selection
##################################################
## Note that event generation may fail if no matching matrix element has
## been found. Coupling orders are with respect to the Born process,
## i.e. NLO QCD does not require an additional power of alphas.
## Model assumptions
read Matchbox/StandardModelLike.in
read Matchbox/DiagonalCKM.in
## Set the order of the couplings
cd /Herwig/Merging
set MergingFactory:OrderInAlphaS 0
set MergingFactory:OrderInAlphaEW 2
## Select the process
## You may use identifiers such as p, pbar, j, l, mu+, h0 etc.
do MergingFactory:Process p p -> e+ e- [ j j ]
set MergingFactory:NLOProcesses 2
# Set the merging scale deviding the parton shower
# from the matrix element region in phase space.
set Merger:MergingScale 15.*GeV
set Merger:MergingScaleSmearing 0.1
# The following lines control a preweighter,
# that can be used to force more events in higher
# HT or pt regions. The unweighted events are accepted
# with a enhanced probability W, that is divided fron the
# event weight once the event is accepted.
# W = ((HT/scale)^HTPower + (pt_max/scale)^MaxPTPower)
# with scale = MZ (can be changed)
# Note that the weights will therefore differ from "1"
# if the powers are not zero.
set MPreWeight:HTPower 0
set MPreWeight:MaxPTPower 0
set MPreWeight:OnlyColoured No
# The next line can switch of hadronization
# and MPI modelling. Use with care!!
# read Matchbox/PQCDLevel.in
## Special settings required for on-shell production of unstable particles
## enable for on-shell top production
# read Matchbox/OnShellTopProduction.in
## enable for on-shell W, Z or h production
# read Matchbox/OnShellWProduction.in
# read Matchbox/OnShellZProduction.in
# read Matchbox/OnShellHProduction.in
# Special settings for the VBF approximation
# read Matchbox/VBFDiagramsOnly.in
##################################################
## Matrix element library selection
##################################################
## Select a generic tree/loop combination or a
## specialized NLO package
# read Matchbox/MadGraph-GoSam.in
# read Matchbox/MadGraph-MadGraph.in
# read Matchbox/MadGraph-NJet.in
# read Matchbox/MadGraph-OpenLoops.in
# read Matchbox/HJets.in
# read Matchbox/VBFNLO.in
## Uncomment this to use ggh effective couplings
## currently only supported by MadGraph-GoSam and
## MadGraph-Openloops
# read Matchbox/HiggsEffective.in
##################################################
## Cut selection
## See the documentation for more options
##################################################
cd /Herwig/Cuts/
set ChargedLeptonPairMassCut:MinMass 60*GeV
set ChargedLeptonPairMassCut:MaxMass 120*GeV
cd /Herwig/MatrixElements/Matchbox/Utility
insert DiagramGenerator:ExcludeInternal 0 /Herwig/Particles/gamma
## cuts on additional jets
cd /Herwig/Cuts/
# read Matchbox/DefaultPPJets.in
# insert JetCuts:JetRegions 0 FirstJet
# insert JetCuts:JetRegions 1 SecondJet
# insert JetCuts:JetRegions 2 ThirdJet
# insert JetCuts:JetRegions 3 FourthJet
##################################################
## Scale choice
## See the documentation for more options
##################################################
cd /Herwig/MatrixElements/Matchbox/Scales/
set /Herwig/Merging/MergingFactory:ScaleChoice LeptonPairMassScale
##################################################
## Scale uncertainties
##################################################
# read Matchbox/MuDown.in
# read Matchbox/MuUp.in
##################################################
## Shower scale uncertainties
##################################################
# read Matchbox/MuQDown.in
# read Matchbox/MuQUp.in
##################################################
## CMW - Scheme
##################################################
read Merging/Merging-Dipole-FactorCMWSchemeTune.in
### Use factor in alpha_s argument: alpha_s(q) -> alpha_s(fac*q)
### with fac=exp(-(67-3pi^2-10/3*Nf)/(33-2Nf))
read Merging/FactorCMWScheme.in
### Linear CMW multiplication:
### alpha_s(q) -> alpha_s(q)(1+K_g*alpha_s(q)/2pi )
# read Merging/LinearCMWScheme.in
##################################################
## PDF choice
##################################################
read Matchbox/FiveFlavourNoBMassScheme.in
read Matchbox/MMHT2014.in
##################################################
## Analyses
##################################################
cd /Herwig/Analysis
-insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 Rivet
+## Write HepMC events. Modify the PrintEvent interface for your needs.
# insert /Herwig/Generators/EventGenerator:AnalysisHandlers 0 HepMCFile
+## Setup the Rivet analysis:
+#read snippets/Rivet.in
+#insert Rivet:Analyses 0 XXX_2017_ABC123
-# Here we collected a various Rivet analysis for Zs at LHC
-# at the 8 TeV. (The collection might not be complete.)
-read Merging/LHC7-Z-Analysis.in
+## Here we collected a various Rivet analysis for Zs at LHC
+## at the 8 TeV. (The collection might not be complete.)
+# read Merging/LHC7-Z-Analysis.in
##################################################
## Save the generator
##################################################
do /Herwig/Merging/MergingFactory:ProductionMode
set /Herwig/Generators/EventGenerator:IntermediateOutput Yes
cd /Herwig/Generators
saverun LHC-Z-Merging EventGenerator
diff --git a/src/TVT-Powheg.in b/src/TVT-Powheg.in
--- a/src/TVT-Powheg.in
+++ b/src/TVT-Powheg.in
@@ -1,95 +1,85 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on Tevatron parameters
# using NLO matrix elements and matching in
# the Powheg formalism
# usage: Herwig read TVT.in
#
# Since most parameters are identical to LHC,
# we use the default EventGenerator and adapt only
# for the differences
##################################################
read snippets/PPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
##################################################
# Need to use an NLO PDF
##################################################
set /Herwig/Particles/p+:PDF /Herwig/Partons/HardNLOPDF
set /Herwig/Particles/pbar-:PDF /Herwig/Partons/HardNLOPDF
set /Herwig/Shower/ShowerHandler:PDFA /Herwig/Partons/ShowerLOPDF
set /Herwig/Shower/ShowerHandler:PDFB /Herwig/Partons/ShowerLOPDF
set /Herwig/Partons/MPIExtractor:FirstPDF /Herwig/Partons/MPIPDF
set /Herwig/Partons/MPIExtractor:SecondPDF /Herwig/Partons/MPIPDF
set /Herwig/Partons/PPExtractor:FirstPDF /Herwig/Partons/HardNLOPDF
set /Herwig/Partons/PPExtractor:SecondPDF /Herwig/Partons/HardNLOPDF
##################################################
# Setup the POWHEG shower
##################################################
cd /Herwig/Shower
set ShowerHandler:HardEmission POWHEG
-read Matchbox/Powheg-Default-ShowerAlphaSTune.in
##################################################
# Tevatron physics parameters (override defaults)
##################################################
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 2000.0
set EventGenerator:EventHandler:BeamB /Herwig/Particles/pbar-
##################################################
# Matrix Elements for hadron-hadron collisions
# (by default only gamma/Z switched on)
##################################################
cd /Herwig/MatrixElements
# Drell-Yan Z/gamma
insert SubProcess:MatrixElements[0] PowhegMEqq2gZ2ff
# Drell-Yan W
# insert SubProcess:MatrixElements[0] PowhegMEqq2W2ff
# higgs + W (N.B. if considering all W decay modes useful to set )
# (jet pT cut to zero so no cut on W decay products )
# insert SubProcess:MatrixElements[0] PowhegMEPP2WH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
# higgs + Z (N.B. if considering all Z decay modes useful to set )
# (jet pT cut to zero so no cut on Z decay products )
# insert SubProcess:MatrixElements[0] PowhegMEPP2ZH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
# gg/qqbar -> Higgs
# insert SubProcess:MatrixElements[0] PowhegMEHiggs
cd /Herwig/Generators
##################################################
# Useful analysis handlers for hadron-hadron physics
##################################################
# analysis of W/Z events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun TVT-Powheg EventGenerator
diff --git a/src/TVT-TTBA.in b/src/TVT-TTBA.in
--- a/src/TVT-TTBA.in
+++ b/src/TVT-TTBA.in
@@ -1,106 +1,97 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator for the Leptoquark model
# in hadron collisions
# The best way to use this is to make your own
# copy of this file and edit that as you require.
#
# The first section loads the model file which
# does not contain anything that users need to touch.
#
# The second section contains the user settings.
###################################################
read snippets/PPCollider.in
# Set emission to POWHEG for radiation in decays
set /Herwig/Shower/ShowerHandler:HardEmission POWHEG
# read model
read TTBA.model
#Set up semi-leptonic (e or mu) top/hadronic topbar
set /Herwig/Particles/t:Synchronized Not_synchronized
set /Herwig/Particles/tbar:Synchronized Not_synchronized
set /Herwig/Particles/t/t->b,bbar,c;:Active No
set /Herwig/Particles/t/t->b,c,dbar;:Active No
set /Herwig/Particles/t/t->b,c,sbar;:Active No
set /Herwig/Particles/t/t->b,sbar,u;:Active No
set /Herwig/Particles/t/t->b,u,dbar;:Active No
set /Herwig/Particles/t/t->nu_e,e+,b;:Active Yes
set /Herwig/Particles/t/t->nu_mu,mu+,b;:Active Yes
set /Herwig/Particles/t/t->nu_tau,tau+,b;:Active No
set /Herwig/Particles/tbar/tbar->b,bbar,cbar;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,cbar,d;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,cbar,s;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,s,ubar;:Active Yes
set /Herwig/Particles/tbar/tbar->bbar,ubar,d;:Active Yes
set /Herwig/Particles/tbar/tbar->nu_ebar,e-,bbar;:Active No
set /Herwig/Particles/tbar/tbar->nu_mubar,mu-,bbar;:Active No
set /Herwig/Particles/tbar/tbar->nu_taubar,tau-,bbar;:Active No
cd /Herwig/Generators
set EventGenerator:EventHandler:LuminosityFunction:Energy 1960.0
set EventGenerator:EventHandler:BeamB /Herwig/Particles/pbar-
##################################################
#
# This section contains the user defined settings
#
##################################################
# Example hard process: Incoming proton, outgoing leptoquarks
cd /Herwig/NewPhysics
set HPConstructor:Processes Exclusive
insert HPConstructor:Incoming 0 /Herwig/Particles/u
insert HPConstructor:Incoming 1 /Herwig/Particles/ubar
insert HPConstructor:Incoming 2 /Herwig/Particles/d
insert HPConstructor:Incoming 3 /Herwig/Particles/dbar
insert HPConstructor:Incoming 4 /Herwig/Particles/s
insert HPConstructor:Incoming 5 /Herwig/Particles/sbar
insert HPConstructor:Incoming 6 /Herwig/Particles/c
insert HPConstructor:Incoming 7 /Herwig/Particles/cbar
insert HPConstructor:Incoming 8 /Herwig/Particles/b
insert HPConstructor:Incoming 9 /Herwig/Particles/bbar
insert HPConstructor:Incoming 10 /Herwig/Particles/g
# Comment out the following line if Axigluon model is selected
insert /Herwig/NewPhysics/HPConstructor:Excluded 0 /Herwig/Particles/Ag
insert HPConstructor:Outgoing 0 /Herwig/Particles/t
insert HPConstructor:Outgoing 1 /Herwig/Particles/tbar
#This is available for comparison to the LO Hw++ result
#cd /Herwig/MatrixElements
#insert SubProcess:MatrixElements[0] MEHeavyQuark
cd /Herwig/EventHandlers
#set EventHandler:CascadeHandler NULL
#set EventHandler:HadronizationHandler NULL
#set EventHandler:DecayHandler NULL
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
-##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
# Other parameters for run
cd /Herwig/Generators
saverun TVT-TTBA EventGenerator
diff --git a/src/TVT.in b/src/TVT.in
--- a/src/TVT.in
+++ b/src/TVT.in
@@ -1,152 +1,143 @@
# -*- ThePEG-repository -*-
##################################################
# Example generator based on Tevatron parameters
# usage: Herwig read TVT.in
#
# Since most parameters are identical to LHC,
# we use the default EventGenerator and adapt only
# for the differences
##################################################
read snippets/PPCollider.in
##################################################
# Technical parameters for this run
##################################################
cd /Herwig/Generators
##################################################
# Tevatron physics parameters (override defaults)
##################################################
set EventGenerator:EventHandler:BeamB /Herwig/Particles/pbar-
########################
## sqrt(s) = 1800 GeV ##
########################
#set EventGenerator:EventHandler:LuminosityFunction:Energy 1800.0 - 1960.0
set EventGenerator:EventHandler:LuminosityFunction:Energy 1960.0
##################################################
# Matrix Elements for hadron-hadron collisions
# (by default only gamma/Z switched on)
##################################################
cd /Herwig/MatrixElements
#
# Electroweak boson W/Z processes
#
# Drell-Yan Z/gamma
insert SubProcess:MatrixElements[0] MEqq2gZ2ff
#
# Drell-Yan W
# insert SubProcess:MatrixElements[0] MEqq2W2ff
#
# W+jet
# insert SubProcess:MatrixElements[0] MEWJet
#
# Z+jet
# insert SubProcess:MatrixElements[0] MEZJet
#
# WW/WZ/ZZ
# insert SubProcess:MatrixElements[0] MEPP2VV
#
# Wgamma/Zgamma
# insert SubProcess:MatrixElements[0] MEPP2VGamma
#
# QCD and gamma processes
#
# QCD 2-2 scattering
# insert SubProcess:MatrixElements[0] MEQCD2to2
#
# gamma+jet
# insert SubProcess:MatrixElements[0] MEGammaJet
#
# gamma-gamma
# insert SubProcess:MatrixElements[0] MEGammaGamma
#
# Heavy quark processes
#
#
# top-antitop production
# insert SubProcess:MatrixElements[0] MEHeavyQuark
#
# single-top
# t-channel
# insert SubProcess:MatrixElements[0] MESingleTopTChannel
# s-channel
# insert SubProcess:MatrixElements[0] MESingleTopSChannel
# tW
#insert SubProcess:MatrixElements[0] MESingleTopTW
#
# Higgs Processes
#
#
# gg/qqbar -> Higgs (recommend including q qbar->Hg as not in ME correction)
# insert SubProcess:MatrixElements[0] MEHiggs
# insert SubProcess:MatrixElements[0] MEHiggsJet
# set MEHiggsJet:Process qqbar
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# higgs+jet
# insert SubProcess:MatrixElements[0] MEHiggsJet
#
# higgs + W (N.B. if considering all W decay modes useful to set )
# (jet pT cut to zero so no cut on W decay products )
# insert SubProcess:MatrixElements[0] MEPP2WH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# higgs + Z (N.B. if considering all Z decay modes useful to set )
# (jet pT cut to zero so no cut on Z decay products )
# insert SubProcess:MatrixElements[0] MEPP2ZH
# set /Herwig/Cuts/JetKtCut:MinKT 0.0*GeV
#
# VBF Higgs
# insert SubProcess:MatrixElements[0] MEPP2HiggsVBF
#
# t tbar Higgs
# insert SubProcess:MatrixElements[0] MEPP2ttbarH
#
# b bbar Higgs
# insert SubProcess:MatrixElements[0] MEPP2bbbarH
cd /Herwig/Generators
##################################################
# Useful analysis handlers for hadron-hadron physics
##################################################
# analysis of W/Z events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/DrellYan
# analysis of top-antitop events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/TTbar
# analysis of gamma+jet events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaJet
# analysis of gamma-gamma events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/GammaGamma
# analysis of higgs-jet events
# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/HiggsJet
##################################################
## prepare for Rivet analysis or HepMC output
## when running with parton shower
##################################################
#read snippets/Rivet.in
#insert /Herwig/Analysis/Rivet:Analyses 0 XXX_2015_ABC123
#read snippets/HepMC.in
#set /Herwig/Analysis/HepMC:PrintEvent NNN
##################################################
-## prepare for Rivet analysis or HepMC output
-## when running at fixed order (NO shower)
-##################################################
-#read snippets/RivetFixedOrder.in
-#insert /Herwig/Analysis/RivetFixedOrder:Analyses 0 XXX_2015_ABC123
-#read snippets/HepMCFixedOrder.in
-#set /Herwig/Analysis/HepMCFixedOrder:PrintEvent NNN
-
-##################################################
# Save run for later usage with 'Herwig run'
##################################################
saverun TVT EventGenerator
diff --git a/src/defaults/Shower.in b/src/defaults/Shower.in
--- a/src/defaults/Shower.in
+++ b/src/defaults/Shower.in
@@ -1,298 +1,300 @@
# -*- ThePEG-repository -*-
############################################################
# Setup of default parton shower
#
# Useful switches for users are marked near the top of
# this file.
#
# Don't edit this file directly, but reset the switches
# in your own input files!
############################################################
library HwMPI.so
library HwShower.so
library HwMatching.so
mkdir /Herwig/Shower
cd /Herwig/Shower
create Herwig::QTildeShowerHandler ShowerHandler
newdef ShowerHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler
newdef ShowerHandler:RemDecayer /Herwig/Partons/RemnantDecayer
# use LO PDFs for Shower, can be changed later
newdef ShowerHandler:PDFA /Herwig/Partons/ShowerLOPDF
newdef ShowerHandler:PDFB /Herwig/Partons/ShowerLOPDF
newdef ShowerHandler:PDFARemnant /Herwig/Partons/RemnantPDF
newdef ShowerHandler:PDFBRemnant /Herwig/Partons/RemnantPDF
#####################################
# initial setup, don't change these!
#####################################
create Herwig::SplittingGenerator SplittingGenerator
create Herwig::ShowerAlphaQCD AlphaQCD
create Herwig::ShowerAlphaQED AlphaQED
create Herwig::QTildeModel ShowerModel
create Herwig::QTildeFinder PartnerFinder
newdef PartnerFinder:PartnerMethod 1
newdef PartnerFinder:ScaleChoice 1
create Herwig::QTildeReconstructor KinematicsReconstructor
newdef KinematicsReconstructor:ReconstructionOption Colour3
newdef KinematicsReconstructor:InitialStateReconOption SofterFraction
newdef KinematicsReconstructor:InitialInitialBoostOption LongTransBoost
newdef /Herwig/Partons/RemnantDecayer:AlphaS AlphaQCD
newdef /Herwig/Partons/RemnantDecayer:AlphaEM AlphaQED
newdef ShowerModel:PartnerFinder PartnerFinder
newdef ShowerModel:KinematicsReconstructor KinematicsReconstructor
newdef ShowerHandler:ShowerModel ShowerModel
newdef ShowerHandler:SplittingGenerator SplittingGenerator
newdef ShowerHandler:SpinCorrelations Yes
newdef ShowerHandler:SoftCorrelations Singular
##################################################################
# Intrinsic pT
#
# Recommended:
# 1.9 GeV for Tevatron W/Z production.
# 2.1 GeV for LHC W/Z production at 10 TeV
# 2.2 GeV for LHC W/Z production at 14 TeV
#
# Set all parameters to 0 to disable
##################################################################
newdef ShowerHandler:IntrinsicPtGaussian 1.3*GeV
newdef ShowerHandler:IntrinsicPtBeta 0
newdef ShowerHandler:IntrinsicPtGamma 0*GeV
newdef ShowerHandler:IntrinsicPtIptmax 0*GeV
#############################################################
# Set up truncated shower handler.
#############################################################
create Herwig::PowhegShowerHandler PowhegShowerHandler
set PowhegShowerHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler
set PowhegShowerHandler:RemDecayer /Herwig/Partons/RemnantDecayer
newdef PowhegShowerHandler:PDFA /Herwig/Partons/ShowerLOPDF
newdef PowhegShowerHandler:PDFB /Herwig/Partons/ShowerLOPDF
newdef PowhegShowerHandler:PDFARemnant /Herwig/Partons/RemnantPDF
newdef PowhegShowerHandler:PDFBRemnant /Herwig/Partons/RemnantPDF
newdef PowhegShowerHandler:MPIHandler /Herwig/UnderlyingEvent/MPIHandler
newdef PowhegShowerHandler:RemDecayer /Herwig/Partons/RemnantDecayer
newdef PowhegShowerHandler:PDFA /Herwig/Partons/ShowerLOPDF
newdef PowhegShowerHandler:PDFB /Herwig/Partons/ShowerLOPDF
newdef PowhegShowerHandler:PDFARemnant /Herwig/Partons/RemnantPDF
newdef PowhegShowerHandler:PDFBRemnant /Herwig/Partons/RemnantPDF
newdef PowhegShowerHandler:ShowerModel ShowerModel
newdef PowhegShowerHandler:SplittingGenerator SplittingGenerator
newdef PowhegShowerHandler:Interactions QCDandQED
newdef PowhegShowerHandler:SpinCorrelations Yes
newdef PowhegShowerHandler:SoftCorrelations Singular
newdef PowhegShowerHandler:IntrinsicPtGaussian 1.3*GeV
newdef PowhegShowerHandler:IntrinsicPtBeta 0
newdef PowhegShowerHandler:IntrinsicPtGamma 0*GeV
newdef PowhegShowerHandler:IntrinsicPtIptmax 0*GeV
newdef PowhegShowerHandler:ReconstructionOption OffShell5
#############################################################
# End of interesting user servicable section.
#
# Anything that follows below should only be touched if you
# know what you're doing.
#
# Really.
#############################################################
#
# a few default values
newdef ShowerHandler:MECorrMode 1
newdef ShowerHandler:ReconstructionOption OffShell5
newdef AlphaQCD:ScaleFactor 1.0
newdef AlphaQCD:NPAlphaS 2
newdef AlphaQCD:Qmin 0.935
newdef AlphaQCD:NumberOfLoops 2
newdef AlphaQCD:InputOption 1
newdef AlphaQCD:AlphaMZ 0.126234
#
#
# Lets set up all the splittings
create Herwig::HalfHalfOneSplitFn QtoQGammaSplitFn
set QtoQGammaSplitFn:InteractionType QED
set QtoQGammaSplitFn:ColourStructure ChargedChargedNeutral
set QtoQGammaSplitFn:AngularOrdered Yes
create Herwig::HalfHalfOneSplitFn QtoQGSplitFn
newdef QtoQGSplitFn:InteractionType QCD
newdef QtoQGSplitFn:ColourStructure TripletTripletOctet
set QtoQGSplitFn:AngularOrdered Yes
create Herwig::OneOneOneSplitFn GtoGGSplitFn
newdef GtoGGSplitFn:InteractionType QCD
newdef GtoGGSplitFn:ColourStructure OctetOctetOctet
set GtoGGSplitFn:AngularOrdered Yes
create Herwig::OneHalfHalfSplitFn GtoQQbarSplitFn
newdef GtoQQbarSplitFn:InteractionType QCD
newdef GtoQQbarSplitFn:ColourStructure OctetTripletTriplet
set GtoQQbarSplitFn:AngularOrdered Yes
create Herwig::OneHalfHalfSplitFn GammatoQQbarSplitFn
newdef GammatoQQbarSplitFn:InteractionType QED
newdef GammatoQQbarSplitFn:ColourStructure NeutralChargedCharged
set GammatoQQbarSplitFn:AngularOrdered Yes
create Herwig::HalfOneHalfSplitFn QtoGQSplitFn
newdef QtoGQSplitFn:InteractionType QCD
newdef QtoGQSplitFn:ColourStructure TripletOctetTriplet
set QtoGQSplitFn:AngularOrdered Yes
create Herwig::HalfOneHalfSplitFn QtoGammaQSplitFn
newdef QtoGammaQSplitFn:InteractionType QED
newdef QtoGammaQSplitFn:ColourStructure ChargedNeutralCharged
set QtoGammaQSplitFn:AngularOrdered Yes
#
# Now the Sudakovs
create Herwig::QTildeSudakov SudakovCommon
newdef SudakovCommon:Alpha AlphaQCD
newdef SudakovCommon:cutoffKinScale 0.0*GeV
newdef SudakovCommon:PDFmax 1.0
newdef SudakovCommon:CutOffOption pT
newdef SudakovCommon:pTmin 1.222798*GeV
cp SudakovCommon QtoQGSudakov
newdef QtoQGSudakov:SplittingFunction QtoQGSplitFn
newdef QtoQGSudakov:PDFmax 1.9
cp SudakovCommon QtoQGammaSudakov
set QtoQGammaSudakov:SplittingFunction QtoQGammaSplitFn
set QtoQGammaSudakov:Alpha AlphaQED
set QtoQGammaSudakov:PDFmax 1.9
cp QtoQGammaSudakov LtoLGammaSudakov
+# Technical parameter to stop evolution.
+set LtoLGammaSudakov:pTmin 0.000001
cp SudakovCommon GtoGGSudakov
newdef GtoGGSudakov:SplittingFunction GtoGGSplitFn
newdef GtoGGSudakov:PDFmax 2.0
cp SudakovCommon GtoQQbarSudakov
newdef GtoQQbarSudakov:SplittingFunction GtoQQbarSplitFn
newdef GtoQQbarSudakov:PDFmax 120.0
cp SudakovCommon GammatoQQbarSudakov
newdef GammatoQQbarSudakov:SplittingFunction GammatoQQbarSplitFn
set GammatoQQbarSudakov:Alpha AlphaQED
newdef GammatoQQbarSudakov:PDFmax 120.0
cp SudakovCommon GtobbbarSudakov
newdef GtobbbarSudakov:SplittingFunction GtoQQbarSplitFn
newdef GtobbbarSudakov:PDFmax 40000.0
cp SudakovCommon GtoccbarSudakov
newdef GtoccbarSudakov:SplittingFunction GtoQQbarSplitFn
newdef GtoccbarSudakov:PDFmax 2000.0
cp SudakovCommon QtoGQSudakov
newdef QtoGQSudakov:SplittingFunction QtoGQSplitFn
cp SudakovCommon QtoGammaQSudakov
newdef QtoGammaQSudakov:SplittingFunction QtoGammaQSplitFn
set QtoGammaQSudakov:Alpha AlphaQED
cp SudakovCommon utoGuSudakov
newdef utoGuSudakov:SplittingFunction QtoGQSplitFn
newdef utoGuSudakov:PDFFactor OverOneMinusZ
newdef utoGuSudakov:PDFmax 5.0
cp SudakovCommon dtoGdSudakov
newdef dtoGdSudakov:SplittingFunction QtoGQSplitFn
newdef dtoGdSudakov:PDFFactor OverOneMinusZ
#
# Now add the final splittings
#
do SplittingGenerator:AddFinalSplitting u->u,g; QtoQGSudakov
do SplittingGenerator:AddFinalSplitting d->d,g; QtoQGSudakov
do SplittingGenerator:AddFinalSplitting s->s,g; QtoQGSudakov
do SplittingGenerator:AddFinalSplitting c->c,g; QtoQGSudakov
do SplittingGenerator:AddFinalSplitting b->b,g; QtoQGSudakov
do SplittingGenerator:AddFinalSplitting t->t,g; QtoQGSudakov
#
do SplittingGenerator:AddFinalSplitting g->g,g; GtoGGSudakov
#
do SplittingGenerator:AddFinalSplitting g->u,ubar; GtoQQbarSudakov
do SplittingGenerator:AddFinalSplitting g->d,dbar; GtoQQbarSudakov
do SplittingGenerator:AddFinalSplitting g->s,sbar; GtoQQbarSudakov
do SplittingGenerator:AddFinalSplitting g->c,cbar; GtoccbarSudakov
do SplittingGenerator:AddFinalSplitting g->b,bbar; GtobbbarSudakov
do SplittingGenerator:AddFinalSplitting g->t,tbar; GtoQQbarSudakov
#
do SplittingGenerator:AddFinalSplitting gamma->u,ubar; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->d,dbar; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->s,sbar; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->c,cbar; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->b,bbar; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->t,tbar; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->e-,e+; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->mu-,mu+; GammatoQQbarSudakov
do SplittingGenerator:AddFinalSplitting gamma->tau-,tau+; GammatoQQbarSudakov
#
do SplittingGenerator:AddFinalSplitting u->u,gamma; QtoQGammaSudakov
do SplittingGenerator:AddFinalSplitting d->d,gamma; QtoQGammaSudakov
do SplittingGenerator:AddFinalSplitting s->s,gamma; QtoQGammaSudakov
do SplittingGenerator:AddFinalSplitting c->c,gamma; QtoQGammaSudakov
do SplittingGenerator:AddFinalSplitting b->b,gamma; QtoQGammaSudakov
do SplittingGenerator:AddFinalSplitting t->t,gamma; QtoQGammaSudakov
do SplittingGenerator:AddFinalSplitting e-->e-,gamma; LtoLGammaSudakov
do SplittingGenerator:AddFinalSplitting mu-->mu-,gamma; LtoLGammaSudakov
do SplittingGenerator:AddFinalSplitting tau-->tau-,gamma; LtoLGammaSudakov
#
# Now lets add the initial splittings. Remember the form a->b,c; means
# that the current particle b is given and we backward branch to new
# particle a which is initial state and new particle c which is final state
#
do SplittingGenerator:AddInitialSplitting u->u,g; QtoQGSudakov
do SplittingGenerator:AddInitialSplitting d->d,g; QtoQGSudakov
do SplittingGenerator:AddInitialSplitting s->s,g; QtoQGSudakov
do SplittingGenerator:AddInitialSplitting c->c,g; QtoQGSudakov
do SplittingGenerator:AddInitialSplitting b->b,g; QtoQGSudakov
do SplittingGenerator:AddInitialSplitting u->u,gamma; QtoQGammaSudakov
do SplittingGenerator:AddInitialSplitting d->d,gamma; QtoQGammaSudakov
do SplittingGenerator:AddInitialSplitting s->s,gamma; QtoQGammaSudakov
do SplittingGenerator:AddInitialSplitting c->c,gamma; QtoQGammaSudakov
do SplittingGenerator:AddInitialSplitting b->b,gamma; QtoQGammaSudakov
do SplittingGenerator:AddInitialSplitting t->t,gamma; QtoQGammaSudakov
do SplittingGenerator:AddInitialSplitting g->g,g; GtoGGSudakov
#
do SplittingGenerator:AddInitialSplitting g->d,dbar; GtoQQbarSudakov
do SplittingGenerator:AddInitialSplitting g->u,ubar; GtoQQbarSudakov
do SplittingGenerator:AddInitialSplitting g->s,sbar; GtoQQbarSudakov
do SplittingGenerator:AddInitialSplitting g->c,cbar; GtoccbarSudakov
do SplittingGenerator:AddInitialSplitting g->b,bbar; GtobbbarSudakov
#
do SplittingGenerator:AddInitialSplitting gamma->d,dbar; GammatoQQbarSudakov
do SplittingGenerator:AddInitialSplitting gamma->u,ubar; GammatoQQbarSudakov
do SplittingGenerator:AddInitialSplitting gamma->s,sbar; GammatoQQbarSudakov
do SplittingGenerator:AddInitialSplitting gamma->c,cbar; GammatoQQbarSudakov
do SplittingGenerator:AddInitialSplitting gamma->b,bbar; GammatoQQbarSudakov
#
do SplittingGenerator:AddInitialSplitting d->g,d; dtoGdSudakov
do SplittingGenerator:AddInitialSplitting u->g,u; utoGuSudakov
do SplittingGenerator:AddInitialSplitting s->g,s; QtoGQSudakov
do SplittingGenerator:AddInitialSplitting c->g,c; QtoGQSudakov
do SplittingGenerator:AddInitialSplitting b->g,b; QtoGQSudakov
do SplittingGenerator:AddInitialSplitting dbar->g,dbar; dtoGdSudakov
do SplittingGenerator:AddInitialSplitting ubar->g,ubar; utoGuSudakov
do SplittingGenerator:AddInitialSplitting sbar->g,sbar; QtoGQSudakov
do SplittingGenerator:AddInitialSplitting cbar->g,cbar; QtoGQSudakov
do SplittingGenerator:AddInitialSplitting bbar->g,bbar; QtoGQSudakov
#
do SplittingGenerator:AddInitialSplitting d->gamma,d; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting u->gamma,u; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting s->gamma,s; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting c->gamma,c; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting b->gamma,b; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting dbar->gamma,dbar; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting ubar->gamma,ubar; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting sbar->gamma,sbar; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting cbar->gamma,cbar; QtoGammaQSudakov
do SplittingGenerator:AddInitialSplitting bbar->gamma,bbar; QtoGammaQSudakov
diff --git a/src/snippets/DipoleMerging.in b/src/snippets/DipoleMerging.in
--- a/src/snippets/DipoleMerging.in
+++ b/src/snippets/DipoleMerging.in
@@ -1,119 +1,113 @@
# -*- ThePEG-repository -*-
cd /Herwig/Cuts
# Set up cuts for Merging
set Cuts:Fuzzy FuzzyTheta
clear Cuts:OneCuts
insert Cuts:OneCuts[0] PhotonCut
insert Cuts:OneCuts[1] LeptonCut
insert Cuts:OneCuts[2] TopQuarkCut
insert Cuts:OneCuts[3] BottomQuarkCut
insert Cuts:OneCuts[4] WBosonCut
insert Cuts:OneCuts[5] ZBosonCut
insert Cuts:OneCuts[6] HiggsBosonCut
insert Cuts:OneCuts[7] ChargedLeptonCut
clear Cuts:TwoCuts
insert Cuts:TwoCuts[0] LeptonPairMassCut
insert Cuts:TwoCuts[1] ChargedLeptonPairMassCut
insert Cuts:TwoCuts[2] LeptonDeltaRCut
insert Cuts:TwoCuts[3] ChargedLeptonDeltaRCut
clear Cuts:MultiCuts
insert Cuts:MultiCuts[0] PhotonIsolationCut
insert Cuts:MultiCuts[1] MissingPtCut
set Cuts:MHatMin 0.0*GeV
set JetKtCut:MinKT 0.0*GeV
# Set up the alphas for merging
set /Herwig/Model:QCD/RunningAlphaS /Herwig/Couplings/NLOAlphaS
set /Herwig/DipoleShower/DipoleShowerHandler:GlobalAlphaS /Herwig/Couplings/NLOAlphaS
set /Herwig/Generators/EventGenerator:StandardModelParameters:QCD/RunningAlphaS /Herwig/Couplings/NLOAlphaS
cd /Herwig/Merging
set MergingFactory:Cuts /Herwig/Cuts/Cuts
set MergingFactory:MergingHelper Merger
set MergingFactory:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler
cd /Herwig/Generators
set EventGenerator:EventHandler:CascadeHandler /Herwig/DipoleShower/DipoleShowerHandler
set /Herwig/DipoleShower/DipoleShowerHandler:MaxPtIsMuF Yes
cd /Herwig/EventHandlers
set EventHandler:Sampler /Herwig/Samplers/Sampler
set EventHandler:Weighted No
set EventHandler:CollisionCuts No
set EventHandler:SubProcessHandlers[0] /Herwig/Merging/MergingFactory
cd /Herwig/Particles
set d:NominalMass 0*GeV
set dbar:NominalMass 0*GeV
set u:NominalMass 0*GeV
set ubar:NominalMass 0*GeV
set s:NominalMass 0*GeV
set sbar:NominalMass 0*GeV
set c:NominalMass 0*GeV
set cbar:NominalMass 0*GeV
#set b:HardProcessMass 0*GeV
#set bbar:HardProcessMass 0*GeV
set e+:HardProcessMass 0*GeV
set e-:HardProcessMass 0*GeV
set mu+:HardProcessMass 0*GeV
set mu-:HardProcessMass 0*GeV
set nu_e:HardProcessMass 0*GeV
set nu_ebar:HardProcessMass 0*GeV
set nu_mu:HardProcessMass 0*GeV
set nu_mubar:HardProcessMass 0*GeV
set nu_tau:HardProcessMass 0*GeV
set nu_taubar:HardProcessMass 0*GeV
cd /Herwig/Partons
set /Herwig/Particles/p+:PDF HardNLOPDF
set /Herwig/Particles/pbar-:PDF HardNLOPDF
set /Herwig/Partons/PPExtractor:FirstPDF HardNLOPDF
set /Herwig/Partons/PPExtractor:SecondPDF HardNLOPDF
set /Herwig/Partons/EPExtractor:SecondPDF HardNLOPDF
set /Herwig/Shower/ShowerHandler:PDFA ShowerNLOPDF
set /Herwig/Shower/ShowerHandler:PDFB ShowerNLOPDF
set /Herwig/DipoleShower/DipoleShowerHandler:PDFA ShowerNLOPDF
set /Herwig/DipoleShower/DipoleShowerHandler:PDFB ShowerNLOPDF
### Don't apply restrictions on the z-boundaries while clustering.
set /Herwig/Merging/Merger:OpenZBoundaries DipoleScale
cd /Herwig/DipoleShower/Kinematics
set IFLightKinematics:OpenZBoundaries Hard
set IILightKinematics:OpenZBoundaries Hard
set FFLightKinematics:OpenZBoundaries Hard
set FILightKinematics:OpenZBoundaries Hard
set FIMassiveKinematics:OpenZBoundaries Hard
set IFMassiveKinematics:OpenZBoundaries Hard
set FFMassiveKinematics:OpenZBoundaries Hard
# Switch of the profiles of the Shower
set /Herwig/DipoleShower/DipoleShowerHandler:HardScaleProfile NULL
-# Set up the rivet analysis to use.
-cd /Herwig/Analysis
-create ThePEG::RivetAnalysis Rivet RivetAnalysis.so
-
-
-
cd /Herwig/Merging
# Currently we do not splitt the hard process for merged processes.
set /Herwig/DipoleShower/DipoleShowerHandler:SplitHardProcess No
diff --git a/src/snippets/Makefile.am b/src/snippets/Makefile.am
--- a/src/snippets/Makefile.am
+++ b/src/snippets/Makefile.am
@@ -1,38 +1,40 @@
BUILT_SOURCES = done-all-links
snippetsdir = ${pkgdatadir}/snippets
INPUTFILES = \
CellGridSampler.in \
Diffraction.in \
DipoleMerging.in \
DipoleShowerFiveFlavours.in \
DipoleShowerFourFlavours.in \
EECollider.in \
EPCollider.in \
HepMCFixedOrder.in \
HepMC.in \
Matchbox.in \
MB-DipoleShower.in \
MB.in \
MonacoSampler.in \
Particles-SetLonglivedParticlesStable.in \
PDF-CT10.in \
PDF-NNPDF30NLO.in \
PPCollider.in \
RivetFixedOrder.in \
Rivet.in \
SoftModel.in \
+SoftTune.in \
CMWinQtiledShower.in \
-SoftTune.in
+YFS.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/YFS.in b/src/snippets/YFS.in
new file mode 100644
--- /dev/null
+++ b/src/snippets/YFS.in
@@ -0,0 +1,18 @@
+
+# By default the QED radiation is now handled in the by interleaving
+# QCD and QED radiation in the showering process.
+
+# If the old YFS formalism is required we have to insert the QEDRadiationHandler
+
+cd /Herwig/EventHandlers
+insert EventHandler:PostSubProcessHandlers[0] /Herwig/QEDRadiation/QEDRadiationHandler
+
+
+# And to prevent double-counting we also need to remove emissions from leptons.
+# Note that YFS here only adds photon radiation if the decaying particle is a W/Z boson.
+
+cd /Herwig/Shower/
+do SplittingGenerator:DeleteFinalSplitting e-->e-,gamma; LtoLGammaSudakov
+do SplittingGenerator:DeleteFinalSplitting mu-->mu-,gamma; LtoLGammaSudakov
+do SplittingGenerator:DeleteFinalSplitting tau-->tau-,gamma; LtoLGammaSudakov
+

File Metadata

Mime Type
text/x-diff
Expires
Tue, Jan 21, 1:44 AM (1 d, 14 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4243495
Default Alt Text
(338 KB)

Event Timeline