diff --git a/Decay/General/DMMediatorDecayer.cc b/Decay/General/DMMediatorDecayer.cc --- a/Decay/General/DMMediatorDecayer.cc +++ b/Decay/General/DMMediatorDecayer.cc @@ -1,238 +1,238 @@ // -*- C++ -*- // // DMMediatorDecayer.cc is a part of Herwig - A multi-purpose Monte Carlo event generator // Copyright (C) 2002-2019 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 DMMediatorDecayer class. // #include "DMMediatorDecayer.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/Interface/Reference.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "Herwig/Decay/GeneralDecayMatrixElement.h" using namespace Herwig; IBPtr DMMediatorDecayer::clone() const { return new_ptr(*this); } IBPtr DMMediatorDecayer::fullclone() const { return new_ptr(*this); } void DMMediatorDecayer::persistentOutput(PersistentOStream & os) const { os << inpart_ << currentOut_ << current_ << mode_ << wgtloc_ << wgtmax_ << weights_ << cDMmed_ << cSMmed_; } void DMMediatorDecayer::persistentInput(PersistentIStream & is, int) { is >> inpart_ >> currentOut_ >> current_ >> mode_ >> wgtloc_ >> wgtmax_ >> weights_ >> cDMmed_ >> cSMmed_; } // The following static variable is needed for the type // description system in ThePEG. DescribeClass describeHerwigDMMediatorDecayer("Herwig::DMMediatorDecayer", "Herwig.so"); void DMMediatorDecayer::Init() { static ClassDocumentation documentation ("The DMMediatorDecayer class is designed for the decays of low mass vector bosons"); } void DMMediatorDecayer::setDecayInfo(PDPtr in, const vector & outCurrent, WeakCurrentPtr current, double normin, vector sm) { inpart_ = in; currentOut_ = outCurrent; current_ = current; cDMmed_=normin; cSMmed_=sm; } int DMMediatorDecayer::modeNumber(bool & cc, tcPDPtr parent, const tPDVector & children) const { vector id; id.push_back(parent->id()); for(unsigned int ix=0;ixid()); return modeNumber(cc,id); } void DMMediatorDecayer::doinitrun() { current_->initrun(); DecayIntegrator::doinitrun(); } void DMMediatorDecayer::doinit() { DecayIntegrator::doinit(); // make sure the current got initialised current_->init(); // find the mode for(unsigned int ix=0;ixnumberOfModes();++ix) { // get the external particles for this mode int iq(0),ia(0); tPDVector ptemp = current_->particles(inpart_->iCharge(),ix,iq,ia); // check this is the right mode if(ptemp.size()!=currentOut_.size()) continue; vector matched(ptemp.size(),false); bool match = true; for(unsigned int iy=0;iycreateMode(inpart_->iCharge(),tcPDPtr(),FlavourInfo(), ix,mode,0,-1,channel,inpart_->mass()); if(done) { // the maximum weight and the channel weights // the weights for the channel if(weights_.empty()) { weights_.resize(mode->channels().size(),1./(mode->channels().size())); } mode_ = ix; // special for the two body modes if(out.size()==2) { weights_.clear(); mode=new_ptr(PhaseSpaceMode(inpart_,out,1.)); } mode->maxWeight(wgtmax_); mode->setWeights(weights_); addMode(mode); } break; } } int DMMediatorDecayer::modeNumber(bool & cc, vector id) const { // incoming particle long idtemp; tPDPtr p0=getParticleData(id[0]); idtemp = p0->CC() ? -id[0] : id[0]; if( id[0] ==inpart_->id()) cc=false; else if(idtemp==inpart_->id()) cc=true ; else return -1; vector idout; for(vector::iterator it=++id.begin();it!=id.end();++it) { idout.push_back(*it); } unsigned int icurr=current_->decayMode(idout); if(mode_==icurr) return 0; else return -1; } void DMMediatorDecayer:: constructSpinInfo(const Particle & part, ParticleVector decay) const { VectorWaveFunction::constructSpinInfo(vectors_,const_ptr_cast(&part), Helicity::incoming,true,false); weakCurrent()->constructSpinInfo(ParticleVector(decay.begin(),decay.end())); } double DMMediatorDecayer::me2(const int ichan, const Particle & part, const tPDVector & outgoing, const vector & momenta, MEOption meopt) const { using namespace ThePEG::Helicity; // polarization vectors for the incoming particle if(meopt==Initialize) { VectorWaveFunction::calculateWaveFunctions(vectors_,rho_, const_ptr_cast(&part), incoming,false); // fix rho if no correlations fixRho(rho_); } // work out the mapping for the hadron vector int nOut = momenta.size(); vector constants(nOut+1); vector iSpin(nOut); vector hadrons(nOut); int itemp(1); int ix(nOut); do { --ix; iSpin[ix] = outgoing[ix]->iSpin(); itemp *= iSpin[ix]; constants[ix] = itemp; hadrons[ix] = outgoing[ix]->id(); } while(ix>0); constants[nOut] = 1; Energy2 scale(sqr(part.mass())); // calculate the hadron current Energy q = part.mass(); // currents for the different flavour components vector hadronI0(current_->current(tcPDPtr(), FlavourInfo(IsoSpin::IZero, IsoSpin::I3Zero,Strangeness::Zero), mode(),ichan,q,outgoing,momenta,DecayIntegrator::Calculate)); vector hadronI1(current_->current(tcPDPtr(), FlavourInfo(IsoSpin::IOne, IsoSpin::I3Zero,Strangeness::Zero), mode(),ichan,q,outgoing,momenta,DecayIntegrator::Calculate)); vector hadronssbar(current_->current(tcPDPtr(), FlavourInfo(IsoSpin::IZero, IsoSpin::I3Zero,Strangeness::ssbar), mode(),ichan,q,outgoing,momenta,DecayIntegrator::Calculate)); // compute the matrix element GeneralDecayMEPtr newME(new_ptr(GeneralDecayMatrixElement(PDT::Spin1,iSpin))); vector ihel(momenta.size()+1); unsigned int hI0_size = hadronI0.size(); unsigned int hI1_size = hadronI1.size(); unsigned int hss_size = hadronssbar.size(); unsigned int maxsize = max(max(hadronI0.size(),hadronI1.size()),hss_size); for(unsigned int hhel=0;hhel0;--ix) { - ihel[ix+1]=(hhel%constants[ix-1])/constants[ix]; + ihel[ix]=(hhel%constants[ix-1])/constants[ix]; } for(ihel[0]=0;ihel[0]<3;++ihel[0]) { Complex amp = 0.; // work on coefficients for the I1 and I0 bits if(hI0_size != 0 ) amp += (cSMmed_[0]+cSMmed_[1])/sqrt(2.)/q*(vectors_[ihel[0]].wave().dot(hadronI0[hhel])); if(hI1_size !=0) amp += (cSMmed_[0]-cSMmed_[1])/sqrt(2.)/q*(vectors_[ihel[0]].wave().dot(hadronI1[hhel])); if(hss_size !=0) amp += cSMmed_[2] /q*(vectors_[ihel[0]].wave().dot(hadronssbar[hhel])); (*newME)(ihel) = cDMmed_*amp; } } // store the matrix element ME(newME); // return the answer double output = (ME()->contract(rho_)).real(); return output; } Energy DMMediatorDecayer::partialWidth(tPDPtr part, vector out) { vector id; id.push_back(part->id()); for(unsigned int ix=0;ixid()); bool cc; int mode=modeNumber(cc,id); imode(mode); return initializePhaseSpaceMode(mode,true,true); } diff --git a/MatrixElement/Makefile.am b/MatrixElement/Makefile.am --- a/MatrixElement/Makefile.am +++ b/MatrixElement/Makefile.am @@ -1,19 +1,18 @@ SUBDIRS = General Lepton Hadron DIS Powheg Gamma Matchbox Reweighters if WANT_LIBFASTJET SUBDIRS += FxFx endif noinst_LTLIBRARIES = libHwME.la libHwME_la_SOURCES = \ HwMEBase.h HwMEBase.fh HwMEBase.cc \ MEMultiChannel.h MEMultiChannel.cc \ MEfftoVH.h MEfftoVH.cc \ MEfftoffH.h MEfftoffH.cc \ HardVertex.fh HardVertex.h HardVertex.cc \ ProductionMatrixElement.h ProductionMatrixElement.cc \ DrellYanBase.h DrellYanBase.cc \ BlobME.h BlobME.cc \ -MEMinBias.h MEMinBias.cc \ -MEDM2Mesons.h MEDM2Mesons.cc +MEMinBias.h MEMinBias.cc diff --git a/Models/DarkMatter/DMDMMediatorVertex.cc b/Models/DarkMatter/DMDMMediatorVertex.cc --- a/Models/DarkMatter/DMDMMediatorVertex.cc +++ b/Models/DarkMatter/DMDMMediatorVertex.cc @@ -1,62 +1,66 @@ // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DMDMMediatorVertex class. // #include "DMDMMediatorVertex.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/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "DMModel.h" using namespace Herwig; -DMDMMediatorVertex::DMDMMediatorVertex() : cDMmed_(0.) {} +DMDMMediatorVertex::DMDMMediatorVertex() : cDMmed_(0.) { + orderInGem(1); + orderInGs(0); + colourStructure(ColourStructure::DELTA); +} IBPtr DMDMMediatorVertex::clone() const { return new_ptr(*this); } IBPtr DMDMMediatorVertex::fullclone() const { return new_ptr(*this); } void DMDMMediatorVertex::persistentOutput(PersistentOStream & os) const { os << cDMmed_; } void DMDMMediatorVertex::persistentInput(PersistentIStream & is, int) { is >> cDMmed_; } // The following static variable is needed for the type // description system in ThePEG. DescribeClass describeHerwigDMDMMediatorVertex("Herwig::DMDMMediatorVertex", "HwDMModel.so"); void DMDMMediatorVertex::Init() { static ClassDocumentation documentation ("The DMDMMediatorVertex class implements the couplnig of dark matter to the mediator."); } void DMDMMediatorVertex::setCoupling(Energy2 ,tcPDPtr aa,tcPDPtr,tcPDPtr) { int iferm=abs(aa->id()); assert(iferm==52); norm(cDMmed_); left(1.); right(1.); } void DMDMMediatorVertex::doinit() { FFVVertex::doinit(); cDMModelPtr model = dynamic_ptr_cast(generator()->standardModel()); cDMmed_ = model->cDMmed(); addToList(52, 52, 32); } diff --git a/Models/DarkMatter/DMMediatorQuarksVertex.cc b/Models/DarkMatter/DMMediatorQuarksVertex.cc --- a/Models/DarkMatter/DMMediatorQuarksVertex.cc +++ b/Models/DarkMatter/DMMediatorQuarksVertex.cc @@ -1,64 +1,68 @@ // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DMMediatorQuarksVertex class. // #include "DMMediatorQuarksVertex.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/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" #include "DMModel.h" using namespace Herwig; -DMMediatorQuarksVertex::DMMediatorQuarksVertex() {} +DMMediatorQuarksVertex::DMMediatorQuarksVertex() { + orderInGem(1); + orderInGs(0); + colourStructure(ColourStructure::DELTA); +} IBPtr DMMediatorQuarksVertex::clone() const { return new_ptr(*this); } IBPtr DMMediatorQuarksVertex::fullclone() const { return new_ptr(*this); } void DMMediatorQuarksVertex::persistentOutput(PersistentOStream & os) const { os << cSMmed_; } void DMMediatorQuarksVertex::persistentInput(PersistentIStream & is, int) { is >> cSMmed_; } void DMMediatorQuarksVertex::setCoupling(Energy2 ,tcPDPtr aa,tcPDPtr,tcPDPtr) { int iferm=abs(aa->id()); assert(iferm>0 && iferm<4); norm(cSMmed_[iferm]); left(1.); right(1.); } // The following static variable is needed for the type // description system in ThePEG. DescribeClass describeHerwigDMMediatorQuarksVertex("Herwig::DMMediatorQuarksVertex", "HwDMModel.so"); void DMMediatorQuarksVertex::Init() { static ClassDocumentation documentation ("The DMMediatorQuarksVertex class implements the coupling of the quarks to the mediator."); } void DMMediatorQuarksVertex::doinit() { FFVVertex::doinit(); cDMModelPtr model = dynamic_ptr_cast(generator()->standardModel()); cSMmed_ = model->cSMmed(); for(int ix=1;ix<4;++ix) { addToList(-ix, ix, 32); } } diff --git a/Models/DarkMatter/DMModel.cc b/Models/DarkMatter/DMModel.cc --- a/Models/DarkMatter/DMModel.cc +++ b/Models/DarkMatter/DMModel.cc @@ -1,70 +1,81 @@ // -*- C++ -*- // // This is the implementation of the non-inlined, non-templated member // functions of the DMModel class. // #include "DMModel.h" #include "ThePEG/Interface/ClassDocumentation.h" #include "ThePEG/Interface/Parameter.h" +#include "ThePEG/Interface/Reference.h" #include "ThePEG/Interface/ParVector.h" #include "ThePEG/EventRecord/Particle.h" #include "ThePEG/Repository/UseRandom.h" #include "ThePEG/Repository/EventGenerator.h" #include "ThePEG/Utilities/DescribeClass.h" #include "ThePEG/Persistency/PersistentOStream.h" #include "ThePEG/Persistency/PersistentIStream.h" using namespace Herwig; DMModel::DMModel() : cDMmed_(0.), cSMmed_({1.0,1.0,1.0}) {} IBPtr DMModel::clone() const { return new_ptr(*this); } IBPtr DMModel::fullclone() const { return new_ptr(*this); } void DMModel::persistentOutput(PersistentOStream & os) const { - os << cDMmed_ << cSMmed_; + os << cDMmed_ << cSMmed_ << QQZpVertex_ << DMDMZpVertex_; } void DMModel::persistentInput(PersistentIStream & is, int) { - is >> cDMmed_ >> cSMmed_; + is >> cDMmed_ >> cSMmed_ >> QQZpVertex_ >> DMDMZpVertex_; } // The following static variable is needed for the type // description system in ThePEG. DescribeClass describeHerwigDMModel("Herwig::DMModel", "HwDMModel.so"); void DMModel::Init() { static ClassDocumentation documentation ("The DMModel class is designed to implement a simple dark matter model" " with fermionic dark matter and a vector mediator, " "as described in arXiv:1911.11147", "The DMModel class is designed to implement a simple dark matter model" " with fermionic dark matter and a vector mediator, " "as described in \\cite{Plehn:2019jeo}", "\\bibitem{Plehn:2019jeo}" "T.~Plehn, P.~Reimitz and P.~Richardson," "%``Hadronic Footprint of GeV-Mass Dark Matter,''" "arXiv:1911.11147 [hep-ph]." "%%CITATION = ARXIV:1911.11147;%%"); static Parameter interfacecDMmed ("cDMmed", "coupling of DM to dark mediator", &DMModel::cDMmed_, 1.0, 0., 10., false, false, Interface::limited); static ParVector interfacecSMmed ("cSMmed", "coupling of SM to dark mediator", &DMModel::cSMmed_, -1 , 1.0 , -10. , 10. , false, false, Interface::limited); + static Reference interfaceQQZpVertex + ("Vertex/QQZpVertex", + "The vertex coupling the quarks and the mediator", + &DMModel::QQZpVertex_, false, false, true, false, false); + + static Reference interfaceDMDMZpVertex + ("Vertex/DMDMZpVertex", + "The vertex coupling the DM to the mediator", + &DMModel::DMDMZpVertex_, false, false, true, false, false); + } diff --git a/Models/DarkMatter/DMModel.h b/Models/DarkMatter/DMModel.h --- a/Models/DarkMatter/DMModel.h +++ b/Models/DarkMatter/DMModel.h @@ -1,116 +1,147 @@ // -*- C++ -*- #ifndef Herwig_DMModel_H #define Herwig_DMModel_H // // This is the declaration of the DMModel class. // #include "Herwig/Models/General/BSMModel.h" #include "DMModel.fh" namespace Herwig { using namespace ThePEG; /** * The DMModel class is designed to implement a simple dark matter mode * with fermionic dark matter and a vector mediator, as described in arXiv:1911.11147 * * @see \ref DMModelInterfaces "The interfaces" * defined for DMModel. */ class DMModel: public BSMModel { public: /** * The default constructor. */ DMModel(); public: /** @name Functions used by the persistent I/O system. */ //@{ /** * Function used to write out object persistently. * @param os the persistent output stream written to. */ void persistentOutput(PersistentOStream & os) const; /** * Function used to read in object persistently. * @param is the persistent input stream read from. * @param version the version number of the object when written. */ void persistentInput(PersistentIStream & is, int version); //@} /** * The standard Init function used to initialize the interfaces. * Called exactly once for each class by the class description system * before the main function starts or * when this class is dynamically loaded. */ static void Init(); public: /** * Access to the couplings */ //@{ /** * DM coupling to the mediator */ const double & cDMmed() const {return cDMmed_;} /** * The couplings of the quarks to the mediators */ const vector & cSMmed() const {return cSMmed_;} //@} + +public: + + /** + * Pointers to the objects handling the vertices. + */ + //@{ + /** + * Pointer to the quark-quark mediator vertex + */ + virtual tAbstractFFVVertexPtr vertexQQZp() const { + return QQZpVertex_; + } + + /** + * Pointer to the DM-DM mediator vertex + */ + virtual tAbstractFFVVertexPtr vertexDMDMZp() const { + return DMDMZpVertex_; + } protected: /** @name Clone Methods. */ //@{ /** * Make a simple clone of this object. * @return a pointer to the new object. */ virtual IBPtr clone() const; /** Make a clone of this object, possibly modifying the cloned object * to make it sane. * @return a pointer to the new object. */ virtual IBPtr fullclone() const; //@} private: /** * The assignment operator is private and must never be called. * In fact, it should not even be implemented. */ DMModel & operator=(const DMModel &) = delete; private: /** * DM coupling to the dark mediator */ double cDMmed_; - /** + /** * SM couplings to the dark mediator */ vector cSMmed_; +private: + + /** + * Pointer to the quark-quark mediator vertex + */ + AbstractFFVVertexPtr QQZpVertex_; + + /** + * Pointer to the DM-DM mediator vertex + */ + AbstractFFVVertexPtr DMDMZpVertex_; }; } #endif /* Herwig_DMModel_H */ diff --git a/MatrixElement/MEDM2Mesons.cc b/Models/DarkMatter/MEDM2Mesons.cc rename from MatrixElement/MEDM2Mesons.cc rename to Models/DarkMatter/MEDM2Mesons.cc diff --git a/MatrixElement/MEDM2Mesons.h b/Models/DarkMatter/MEDM2Mesons.h rename from MatrixElement/MEDM2Mesons.h rename to Models/DarkMatter/MEDM2Mesons.h diff --git a/Models/DarkMatter/Makefile.am b/Models/DarkMatter/Makefile.am --- a/Models/DarkMatter/Makefile.am +++ b/Models/DarkMatter/Makefile.am @@ -1,20 +1,23 @@ BUILT_SOURCES = DM__all.cc CLEANFILES = DM__all.cc DM__all.cc : $(DIR_H_FILES) $(DIR_CC_FILES) Makefile @echo "Concatenating .cc files into $@" @$(top_srcdir)/cat_with_cpplines $(DIR_CC_FILES) > $@ EXTRA_DIST = $(ALL_H_FILES) $(ALL_CC_FILES) DIR_H_FILES = $(addprefix $(srcdir)/,$(ALL_H_FILES)) ALL_H_FILES = \ DMModel.h DMModel.fh \ DMMediatorQuarksVertex.h \ -DMDMMediatorVertex.h +DMDMMediatorVertex.h \ +MEDM2Mesons.h DIR_CC_FILES = $(addprefix $(srcdir)/,$(ALL_CC_FILES)) ALL_CC_FILES = \ DMModel.cc \ DMMediatorQuarksVertex.cc \ -DMDMMediatorVertex.cc +DMDMMediatorVertex.cc \ +MEDM2Mesons.cc + diff --git a/src/DM.in b/src/DM.in new file mode 100644 --- /dev/null +++ b/src/DM.in @@ -0,0 +1,82 @@ +# -*- ThePEG-repository -*- + + +################################################## +# Read the model parameters +################################################## +read DM.model + +################################################## +# Set the beams +################################################## + +read snippets/EECollider.in +cd /Herwig/EventHandlers +set EventHandler:BeamA /Herwig/Particles/chi +set EventHandler:BeamB /Herwig/Particles/chi +set /Herwig/Particles/chi:PDF /Herwig/Partons/NoPDF + +################################################## +# Set long-lived hadrons/muon to be unstable +################################################## +set /Herwig/Particles/pi0:Stable Unstable +set /Herwig/Particles/pi+:Stable Unstable +set /Herwig/Particles/mu-:Stable Unstable +set /Herwig/Particles/n0:Stable Unstable +set /Herwig/Particles/K_L0:Stable Unstable +set /Herwig/Particles/K+:Stable Unstable + +################################################## +# Selected the hard process +################################################## +# leading-order processes +################################################## + + +create Herwig::DMMediatorWidthGenerator /Herwig/Widths/DMWidth +set /Herwig/Particles/Zp:Width_generator /Herwig/Widths/DMWidth +set /Herwig/Widths/DMWidth:Parent /Herwig/Particles/Zp +insert /Herwig/Widths/DMWidth:WeakCurrents 0 /Herwig/Decays/TwoKaonCzyzCurrent +insert /Herwig/Widths/DMWidth:WeakCurrents 0 /Herwig/Decays/TwoPionCzyzCurrent +insert /Herwig/Widths/DMWidth:WeakCurrents 0 /Herwig/Decays/PhiPiCurrent +set /Herwig/Widths/DMWidth:cDMmed 1.0 +set /Herwig/Widths/DMWidth:cSMmed[0] 1.0 +set /Herwig/Widths/DMWidth:cSMmed[1] 1.0 +set /Herwig/Widths/DMWidth:cSMmed[2] 1.0 + + + + + + +cd /Herwig/MatrixElements + + + +# Set Processes +insert SubProcess:MatrixElements 0 MEDM2Kaons + +################################################## +# LEP physics parameters (override defaults) +################################################## +cd /Herwig/Generators +# must be slightly greater than 2 x DM mass +set EventGenerator:EventHandler:LuminosityFunction:Energy 2.0001 +set /Herwig/Generators/EventGenerator:EventHandler:Cuts:MHatMin 0.2 +cd /Herwig/Generators +################################################## +## prepare for Rivet analysis or HepMC output +## when running with parton shower +################################################## +# create ThePEG::RivetAnalysis /Herwig/Analysis/Rivet RivetAnalysis.so +# insert EventGenerator:AnalysisHandlers 0 /Herwig/Analysis/Rivet +# insert /Herwig/Analysis/Rivet:Analyses 0 ANALYSIS + + +################################################### +# Save run for later usage with 'Herwig run' +################################################## +set EventGenerator:MaxErrors 10000 +set EventGenerator:EventHandler:StatLevel Full +set EventGenerator:EventHandler:CascadeHandler NULL +saverun DM EventGenerator diff --git a/src/Zprime.model b/src/DM.model copy from src/Zprime.model copy to src/DM.model --- a/src/Zprime.model +++ b/src/DM.model @@ -1,128 +1,153 @@ # -*- ThePEG-repository -*- ################################################## # Common setup for Zprime models # # This file does not contain anything that # users need to touch. User settings are in -# ???-ZP.in +# DM.in # ################################################### # # Particle Data object for the new resonances # ################################################### cd /Herwig/Particles -# Z prime model +# Dark model -create /ThePEG/ParticleData Zp -setup Zp 32 Zp 700.0 0.0 0.0 0.0 0 0 3 0 - +create ThePEG::ParticleData Zp +setup Zp 32 Zp 2.0 0.0001 0.0 0.0 0 0 3 0 +create ThePEG::BeamParticleData chi +setup chi 52 chi 1.0 0.0 0.0 0.0 0 0 2 0 ################################################### # # Main directory and model object # ################################################### -mkdir /Herwig/NewPhysics/Zprime -cd /Herwig/NewPhysics/Zprime -create Herwig::ZprimeModel Model HwZprimeModel.so +mkdir /Herwig/NewPhysics/DM +cd /Herwig/NewPhysics/DM +create Herwig::DMModel Model HwDMModel.so # SM couplings set Model:QCD/RunningAlphaS /Herwig/Couplings/NLOAlphaS set Model:EW/RunningAlphaEM /Herwig/Couplings/AlphaEM set Model:EW/CKM /Herwig/CKM set Model:RunningMass /Herwig/RunningMass # Z prime couplings # quark-anti-quark -set Model:ZPTTLCoupling 1.0 -set Model:ZPTTRCoupling 1.0 -set Model:ZPUULCoupling 1.0 -set Model:ZPUURCoupling 1.0 -set Model:ZPCCLCoupling 0.0 -set Model:ZPCCRCoupling 0.0 -set Model:ZPDDLCoupling 0.0 -set Model:ZPDDRCoupling 0.0 -set Model:ZPSSLCoupling 0.0 -set Model:ZPSSRCoupling 0.0 -set Model:ZPBBLCoupling 0.0 -set Model:ZPBBRCoupling 0.0 - -# lepton-anti-lepton -set Model:ZPeeLCoupling 0.0 -set Model:ZPeeRCoupling 0.0 -set Model:ZPmmLCoupling 0.0 -set Model:ZPmmRCoupling 0.0 -set Model:ZPttLCoupling 0.0 -set Model:ZPttRCoupling 0.0 - -# neutrino-anti-neutrino -set Model:ZPnuenueLCoupling 0.0 -set Model:ZPnuenueRCoupling 0.0 -set Model:ZPnumnumLCoupling 0.0 -set Model:ZPnumnumRCoupling 0.0 -set Model:ZPnutnutLCoupling 0.0 -set Model:ZPnutnutRCoupling 0.0 - -set Model:ZPOverallCoupling 1.0 +set Model:cDMmed 1. +set Model:cSMmed 0 1.0 +set Model:cSMmed 1 1.0 +set Model:cSMmed 2 1.0 ################################################### # # Vertices # ################################################### # create model vertices -mkdir /Herwig/Vertices/Zprime -cd /Herwig/Vertices/Zprime -library HwZprimeModel.so -create Herwig::ZprimeModelZPQQVertex Zprime_ZPQQVertex +mkdir /Herwig/Vertices/DM +cd /Herwig/Vertices/DM +library HwDMModel.so +create Herwig::DMMediatorQuarksVertex DM_QQZPVertex +create Herwig::DMDMMediatorVertex DM_DMDMZPVertex -cd /Herwig/NewPhysics/Zprime +cd /Herwig/NewPhysics/DM # SM vertices set Model:Vertex/FFZ /Herwig/Vertices/FFZVertex set Model:Vertex/FFW /Herwig/Vertices/FFWVertex set Model:Vertex/FFH /Herwig/Vertices/FFHVertex set Model:Vertex/FFG /Herwig/Vertices/FFGVertex set Model:Vertex/FFP /Herwig/Vertices/FFPVertex set Model:Vertex/GGG /Herwig/Vertices/GGGVertex set Model:Vertex/GGGG /Herwig/Vertices/GGGGVertex set Model:Vertex/WWH /Herwig/Vertices/WWHVertex set Model:Vertex/WWW /Herwig/Vertices/WWWVertex set Model:Vertex/WWWW /Herwig/Vertices/WWWWVertex set Model:Vertex/HGG /Herwig/Vertices/HGGVertex set Model:Vertex/HHH /Herwig/Vertices/HHHVertex set Model:Vertex/WWHH /Herwig/Vertices/WWHHVertex set Model:Vertex/HHH /Herwig/Vertices/HHHVertex set Model:Vertex/HPP /Herwig/Vertices/HPPVertex # model vertices -set Model:Vertex/ZPQQ /Herwig/Vertices/Zprime/Zprime_ZPQQVertex - - +set Model:Vertex/QQZpVertex /Herwig/Vertices/DM/DM_QQZPVertex +set Model:Vertex/DMDMZpVertex /Herwig/Vertices/DM/DM_DMDMZPVertex ################################################### # # Set up spin correlation Decayers # ################################################### cd /Herwig/NewPhysics set TwoBodyDC:CreateDecayModes Yes set ThreeBodyDC:CreateDecayModes No # which particles get the off-shell treatment set NewModel:WhichOffshell All # particles for which decays are included -insert NewModel:DecayParticles 0 /Herwig/Particles/Zp +#insert NewModel:DecayParticles 0 /Herwig/Particles/Zp ################################################### # Set up the model framework ################################################### -set Zprime/Model:ModelGenerator NewModel +set DM/Model:ModelGenerator NewModel ################################################### # # Choose Model over SM # ################################################### cd /Herwig/Generators -set EventGenerator:StandardModelParameters /Herwig/NewPhysics/Zprime/Model +set EventGenerator:StandardModelParameters /Herwig/NewPhysics/DM/Model + + +################################################### +# Matrix Elements for the low energy annhilation +################################################### + +cd /Herwig/MatrixElements +# X X -> mesons +create Herwig::MEDM2Mesons DMMatrixElement +set DMMatrixElement:IncomingA /Herwig/Particles/chi +set DMMatrixElement:IncomingB /Herwig/Particles/chi +# mediator coupling to u,d,s +set DMMatrixElement:cSMmed[0] 1.0 +set DMMatrixElement:cSMmed[1] 1.0 +set DMMatrixElement:cSMmed[2] 1.0 +# DM to mediator coupling +set DMMatrixElement:cDMmed 1.0 +set DMMatrixElement:Mediator /Herwig/Particles/Zp +# create the matrix elements for the different processes +cp DMMatrixElement MEDM2Pions +set MEDM2Pions:WeakCurrent /Herwig/Decays/TwoPionCzyzCurrent +cp DMMatrixElement MEDM2Kaons +set MEDM2Kaons:WeakCurrent /Herwig/Decays/TwoKaonCzyzCurrent +cp DMMatrixElement MEDM3Pions +set MEDM3Pions:WeakCurrent /Herwig/Decays/ThreePionCzyzCurrent +cp DMMatrixElement MEDM4Pions +set MEDM4Pions:WeakCurrent /Herwig/Decays/FourPionCzyzCurrent +cp DMMatrixElement MEDM2EtaPiPi +set MEDM2EtaPiPi:WeakCurrent /Herwig/Decays/EtaPiPiCurrent +cp DMMatrixElement MEDM2EtaPrimePiPi +set MEDM2EtaPrimePiPi:WeakCurrent /Herwig/Decays/EtaPrimePiPiCurrent +cp DMMatrixElement MEDM2OmegaPiPi +set MEDM2OmegaPiPi:WeakCurrent /Herwig/Decays/OmegaPiPiCurrent +cp DMMatrixElement MEDM2OmegaPi +set MEDM2OmegaPi:WeakCurrent /Herwig/Decays/OmegaPiCurrent +cp DMMatrixElement MEDM2PiGamma +set MEDM2PiGamma:WeakCurrent /Herwig/Decays/PiGammaCurrent +cp DMMatrixElement MEDM2EtaPhoton +set MEDM2EtaPhoton:WeakCurrent /Herwig/Decays/EtaGammaCurrent +cp DMMatrixElement MEDM2EtaPhi +set MEDM2EtaPhi:WeakCurrent /Herwig/Decays/EtaPhiCurrent +cp DMMatrixElement MEDM2EtaOmega +set MEDM2EtaOmega:WeakCurrent /Herwig/Decays/EtaOmegaCurrent +cp DMMatrixElement MEDM2ppbar +set /Herwig/Decays/CzyzCurrent:FormFactor /Herwig/Decays/CzyzFormFactor +set MEDM2ppbar:WeakCurrent /Herwig/Decays/CzyzCurrent +cp DMMatrixElement MEDM2KKPi +set MEDM2KKPi:WeakCurrent /Herwig/Decays/KKPiCurrent +cp DMMatrixElement MEDM2PhiPi +set MEDM2PhiPi:WeakCurrent /Herwig/Decays/PhiPiCurrent diff --git a/src/Makefile.am b/src/Makefile.am --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,230 +1,233 @@ SUBDIRS = defaults snippets Matchbox Merging defaultsdir = ${pkgdatadir}/defaults bin_PROGRAMS = Herwig Herwig_SOURCES = \ HerwigMain.cc HerwigCLI.cc HerwigCLI.h \ herwigopts.c herwigopts.h BUILT_SOURCES = herwigopts.c herwigopts.h Herwig_LDFLAGS = $(AM_LDFLAGS) -export-dynamic $(THEPEGLDFLAGS) Herwig_LDADD = $(THEPEGLIB) -ldl \ $(top_builddir)/API/libHerwigAPI.la bin_SCRIPTS = herwig-config HELPERFILES = \ CMSSM40.1.1.slha \ NMSSM.spc \ ADD.model \ Leptoquark.model \ LH.model \ LHTP.model \ MSSM.model \ MUED.model \ NMSSM.model \ RPV-Bi.model \ RPV-Tri.model \ RS.model \ +DM.model \ Sextet.model \ TTBA.model \ Zprime.model \ RPV-BI.slha \ RPV-TRI.slha \ RPV-UDD.slha INPUTFILES = \ DIS.in \ DIS-Matchbox.in \ GammaGamma.in \ ILC.in \ ILC-MSSM.in \ ILC-MUED.in \ ILC-RS.in \ LEP.in \ LEP-Matchbox.in \ LHC-ADD.in \ LHC-CEX.in \ LHC-GammaGamma.in \ LHC-ResolvedGammaGamma.in \ LHC.in \ LHC-Matchbox.in \ LHC-LQ.in \ LHC-MSSM.in \ LHC-MUED.in \ LHC-NMSSM.in \ LHC-Powheg.in \ LHC-RPV.in \ LHC-RS.in \ LHC-Sextet.in \ LHC-TRP.in \ LHC-TTBA.in \ LHC-MB.in \ LHC-ZP.in \ TVT.in \ TVT-Powheg.in \ TVT-TTBA.in \ LHC-LH.in \ LHC-LHTP.in \ LHE.in \ LHE-POWHEG.in \ LHE-MCatNLO.in \ LHE-FxFx.in \ -LHE-MGMerging.in +LHE-MGMerging.in \ +DM.in dist_pkgdata_DATA = $(INPUTFILES) $(HELPERFILES) pkgdata_DATA = Makefile-UserModules CLEANFILES = HerwigDefaults.rpo \ *.run *.log *.out *.tex \ multi.test *.output probs.test chisq.value \ LHC-RS-BR.spc LHC-MSSM-BR.spc LHC-RPV-BR.spc clean-local: -rm -rf Herwig ## checking targets ## HerwigDefaults.rpo: Herwig $(srcdir)/defaults/*.in defaults/PDF.in defaults/Analysis.in $(top_builddir)/lib/*.so ./Herwig init -L$(top_builddir)/lib defaults/HerwigDefaults.in -D check_BSM_Full= check_BSM= if WANT_BSM check_BSM += check-LHC-RPV check-LHC-RS check_BSM_Full += \ check-LHC-RPV check-LHC-MSSM check-ILC-MSSM \ check-LHC-NMSSM \ check-LHC-MUED check-ILC-MUED \ check-LHC-RS check-ILC-RS check-LHC-ADD \ check-LHC-LH check-LHC-LHTP \ check-LHC-TRP \ check-LHC-TTBA check-TVT-TTBA \ check-LHC-ZP \ check-LHC-LQ \ -check-LHC-Sextet +check-LHC-Sextet \ +check-DM endif check_BSM_Full_valgrind = $(subst check,check-valgrind,$(check_BSM_Full)) check_BSM_valgrind = $(subst check,check-valgrind,$(check_BSM)) check-local: check-LEP check-LHC $(check_BSM) check-DIS check-ILC check-GammaGamma check-LHC-Powheg check-valgrind-local: check-valgrind-LEP check-valgrind-LHC $(check_BSM_valgrind) check-valgrind-DIS check-valgrind-ILC check-valgrind-GammaGamma check-valgrind-LHC-Powheg check-Powheg: check-LHC-Powheg check-TVT-Powheg check-valgrind-Powheg: check-valgrind-LHC-Powheg check-valgrind-TVT-Powheg check-BSM: $(check_BSM_Full) check-valgrind-BSM: $(check_BSM_Full_valgrind) check_Matchbox= \ check-LEP-Matchbox check-DIS-Matchbox check-LHC-Matchbox check_Matchbox_valgrind = $(subst check,check-valgrind,$(check_Matchbox)) check-Matchbox: $(check_Matchbox) check-valgrind-Matchbox: $(check_Matchbox_valgrind) check-extra: check-LHC-CEX check-LHC-GammaGamma check-LHC-ResolvedGammaGamma check-LHC-MB check-TVT check-valgrind-extra: check-valgrind-LHC-CEX check-valgrind-LHC-GammaGamma check-valgrind-LHC-MB check-valgrind-TVT check-all: check-local check-Powheg check-BSM check-Matchbox check-extra check-valgrind-all: check-valgrind-local check-valgrind-Powheg check-valgrind-BSM check-valgrind-Matchbox check-valgrind-extra link-helper-files: @for i in $(HELPERFILES); do \ if test -f $(srcdir)/$$i -a ! -e $$i; then \ $(LN_S) -f $(srcdir)/$$i; fi; done ## valgrind targets ## VALGRIND=valgrind --leak-check=full --num-callers=25 --freelist-vol=100000000 --leak-resolution=med --trace-children=yes check-valgrind-%: $(srcdir)/%.in HerwigDefaults.rpo link-helper-files $(VALGRIND) ./Herwig read -d1 -D $< &> valgrind-$(notdir $(subst .in,,$<))-read.log $(VALGRIND) ./Herwig run $(notdir $(subst .in,.run,$<)) -N 500 -d1 -D &> valgrind-$(notdir $(subst .in,,$<))-run.log valgrind: valgrind-init valgrind-read valgrind-run valgrind-init: $(VALGRIND) ./Herwig init -d1 -D -L$(top_builddir)/lib defaults/HerwigDefaults.in \ &> /tmp/valgrind-init.log valgrind-read: $(VALGRIND) ./Herwig read -d1 -D LHC.in &> /tmp/valgrind-read.log valgrind-run: $(VALGRIND) ./Herwig run -d1 -D -N5 LHC.run &> /tmp/valgrind-run.log CHECKCOMMAND = ./Herwig run $(notdir $(subst .in,.run,$<)) -N500 -d1 -D check-%: $(srcdir)/%.in HerwigDefaults.rpo link-helper-files ./Herwig read -i . $< -D @echo $(CHECKCOMMAND) @$(CHECKCOMMAND) && echo "# $@ OK #" \ || (echo "###### $@ BAD ######"; false) SETUPTHEPEG=$(THEPEGPATH)/bin/setupThePEG THEPEGREPO=$(THEPEGLIBPATH)/ThePEGDefaults.rpo install-data-hook: @echo Creating repository @./Herwig init -L$(DESTDIR)$(pkglibdir) -i$(DESTDIR)$(pkgdatadir) -i$(DESTDIR)$(pkgdatadir)/snippets $(DESTDIR)$(defaultsdir)/HerwigDefaults.in --repo=$(DESTDIR)$(pkgdatadir)/HerwigDefaults.rpo @if test -n "$(DESTDIR)"; \ then sed -i.bak -e "s@$(DESTDIR)@@g" $(DESTDIR)$(pkgdatadir)/HerwigDefaults.rpo; \ rm -f $(DESTDIR)$(pkgdatadir)/HerwigDefaults.rpo.bak; \ fi uninstall-hook: rm -f $(DESTDIR)$(pkgdatadir)/HerwigDefaults.rpo register: register-with-thepeg-repo register-with-thepeg-repo: @if test -x "$(SETUPTHEPEG)" -a -w "$(THEPEGREPO)"; \ then echo Registering with ThePEG; \ "$(SETUPTHEPEG)" --init \ $(DESTDIR)$(defaultsdir)/HerwigDefaults.in \ -r "$(THEPEGREPO)" -o "$(THEPEGREPO)" \ -i $(DESTDIR)$(pkgdatadir) \ -l$(DESTDIR)$(pkglibdir) ; \ if test -n "$(DESTDIR)"; \ then sed -i -e "s@$(DESTDIR)@@g" "$(THEPEGREPO)" ; fi ; \ fi unregister : unregister-from-thepeg-repo unregister-from-thepeg-repo: @if test -x "$(SETUPTHEPEG)" -a -w "$(THEPEGREPO)"; \ then echo Unregistering with ThePEG; \ "$(SETUPTHEPEG)" --init defaults/HerwigCleanup.in \ -r "$(THEPEGREPO)" -o "$(THEPEGREPO)" \ -l$(DESTDIR)$(pkglibdir) ; \ fi EXTRA_DIST = herwigopts.ggo nodist_Herwig_SOURCES = hgstamp.inc BUILT_SOURCES += hgstamp.inc CLEANFILES += hgstamp.inc HGVERSION := $(shell hg -R $(top_srcdir) parents --template '"Herwig {node|short} ({branch})"' 2> /dev/null || echo \"$(PACKAGE_STRING)\" || true ) .PHONY: update_hgstamp hgstamp.inc: update_hgstamp @[ -f $@ ] || touch $@ @echo '$(HGVERSION)' | cmp -s $@ - || echo '$(HGVERSION)' > $@ GENGETOPT = gengetopt %opts.h %opts.c : %opts.ggo $(GENGETOPT) < $< diff --git a/src/defaults/MatrixElements.in b/src/defaults/MatrixElements.in --- a/src/defaults/MatrixElements.in +++ b/src/defaults/MatrixElements.in @@ -1,324 +1,323 @@ # -*- ThePEG-repository -*- ############################################################################## # Setup of default matrix elements. # # Only one ME is activated by default, but this file lists # some alternatives. All available MEs can be found in the # 'include/Herwig/MatrixElements' subdirectory of your Herwig # installation. # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Instead of editing this file directly, you should reset # the matrix elements in your own input files: # # - create your custom SubProcessHandler # - insert the MEs you need # - set your SubProcessHandler instead of the default (see HerwigDefaults.in) ############################################################################## mkdir /Herwig/MatrixElements cd /Herwig/MatrixElements library HwMELepton.so library HwMEHadron.so library HwMEDIS.so ############################################################ # e+e- matrix elements ############################################################ # e+e- > q qbar create Herwig::MEee2gZ2qq MEee2gZ2qq newdef MEee2gZ2qq:MinimumFlavour 1 newdef MEee2gZ2qq:MaximumFlavour 5 newdef MEee2gZ2qq:AlphaQCD /Herwig/Shower/AlphaQCD newdef MEee2gZ2qq:AlphaQED /Herwig/Shower/AlphaQED # e+e- -> l+l- create Herwig::MEee2gZ2ll MEee2gZ2ll newdef MEee2gZ2ll:Allowed Charged set MEee2gZ2ll:AlphaQED /Herwig/Shower/AlphaQED # e+e- -> W+W- ZZ create Herwig::MEee2VV MEee2VV # e+e- -> ZH create Herwig::MEee2ZH MEee2ZH newdef MEee2ZH:Coupling /Herwig/Shower/AlphaQCD # e+e- -> e+e-H/nu_enu_ebarH create Herwig::MEee2HiggsVBF MEee2HiggsVBF ############################################################ # Low energy matrix elements ############################################################ # e+ e- -> pi+pi- create Herwig::MEee2Mesons MEee2Pions HwMELeptonLowEnergy.so create Herwig::TwoPionCzyzCurrent /Herwig/Decays/TwoPionCzyzCurrent HwWeakCurrents.so set MEee2Pions:WeakCurrent /Herwig/Decays/TwoPionCzyzCurrent # e+ e- -> K+K-/ K0K0 create Herwig::MEee2Mesons MEee2Kaons HwMELeptonLowEnergy.so create Herwig::TwoKaonCzyzCurrent /Herwig/Decays/TwoKaonCzyzCurrent set MEee2Kaons:WeakCurrent /Herwig/Decays/TwoKaonCzyzCurrent # e+ e- -> pi+ pi- pi0 create Herwig::MEee2Mesons MEee3Pions HwMELeptonLowEnergy.so create Herwig::ThreePionCzyzCurrent /Herwig/Decays/ThreePionCzyzCurrent set MEee3Pions:WeakCurrent /Herwig/Decays/ThreePionCzyzCurrent # e+ e- -> 2pi+ 2pi-, 2pi0, pi+ pi- create Herwig::MEee2Mesons MEee4Pions HwMELeptonLowEnergy.so create Herwig::FourPionCzyzCurrent /Herwig/Decays/FourPionCzyzCurrent set MEee4Pions:WeakCurrent /Herwig/Decays/FourPionCzyzCurrent # e+ e- -> eta pi+ pi- create Herwig::MEee2Mesons MEee2EtaPiPi HwMELeptonLowEnergy.so create Herwig::EtaPiPiCurrent /Herwig/Decays/EtaPiPiCurrent set MEee2EtaPiPi:WeakCurrent /Herwig/Decays/EtaPiPiCurrent # e+ e- -> eta' pi+ pi- create Herwig::MEee2Mesons MEee2EtaPrimePiPi HwMELeptonLowEnergy.so create Herwig::EtaPrimePiPiCurrent /Herwig/Decays/EtaPrimePiPiCurrent set MEee2EtaPrimePiPi:WeakCurrent /Herwig/Decays/EtaPrimePiPiCurrent # e+ e- -> omega pi (omega -> pi0 gamma) create Herwig::MEee2Mesons MEee2OmegaPi HwMELeptonLowEnergy.so create Herwig::TwoPionPhotonSNDCurrent /Herwig/Decays/OmegaPiCurrent -#create Herwig::TwoPionPhotonCurrent /Herwig/Decays/OmegaPiCurrent set MEee2OmegaPi:WeakCurrent /Herwig/Decays/OmegaPiCurrent # e+ e- > pi0 gamma create Herwig::MEee2Mesons MEee2PiGamma HwMELeptonLowEnergy.so create Herwig::PionPhotonCurrent /Herwig/Decays/PiGammaCurrent set MEee2PiGamma:WeakCurrent /Herwig/Decays/PiGammaCurrent # e+e- -> eta gamma create Herwig::MEee2Mesons MEee2EtaGamma HwMELeptonLowEnergy.so create Herwig::EtaPhotonCurrent /Herwig/Decays/EtaGammaCurrent set MEee2EtaGamma:WeakCurrent /Herwig/Decays/EtaGammaCurrent # e+e- -> eta phi create Herwig::MEee2Mesons MEee2EtaPhi HwMELeptonLowEnergy.so create Herwig::EtaPhiCurrent /Herwig/Decays/EtaPhiCurrent set MEee2EtaPhi:WeakCurrent /Herwig/Decays/EtaPhiCurrent # e+e- -> eta omega create Herwig::MEee2Mesons MEee2EtaOmega HwMELeptonLowEnergy.so create Herwig::EtaOmegaCurrent /Herwig/Decays/EtaOmegaCurrent set MEee2EtaOmega:WeakCurrent /Herwig/Decays/EtaOmegaCurrent # e+e- > p pbar create Herwig::MEee2Mesons MEee2ppbar HwMELeptonLowEnergy.so create Herwig::WeakBaryonCurrent /Herwig/Decays/CzyzCurrent create Herwig::CzyzNucleonFormFactor /Herwig/Decays/CzyzFormFactor HwFormFactors.so set /Herwig/Decays/CzyzCurrent:FormFactor /Herwig/Decays/CzyzFormFactor set MEee2ppbar:WeakCurrent /Herwig/Decays/CzyzCurrent # e+e- > hyperons create Herwig::MEee2Mesons MEee2LL HwMELeptonLowEnergy.so create Herwig::WeakBaryonCurrent /Herwig/Decays/KornerKurodaCurrent create Herwig::KornerKurodaFormFactor /Herwig/Decays/KornerKurodaFormFactor set /Herwig/Decays/KornerKurodaCurrent:FormFactor /Herwig/Decays/KornerKurodaFormFactor set MEee2LL:WeakCurrent /Herwig/Decays/KornerKurodaCurrent # e+e- -> KKpi create Herwig::MEee2Mesons MEee2KKPi HwMELeptonLowEnergy.so create Herwig::KKPiCurrent /Herwig/Decays/KKPiCurrent set MEee2KKPi:WeakCurrent /Herwig/Decays/KKPiCurrent # e+e- -> phi pi create Herwig::MEee2Mesons MEee2PhiPi HwMELeptonLowEnergy.so create Herwig::PhiPiCurrent /Herwig/Decays/PhiPiCurrent set MEee2PhiPi:WeakCurrent /Herwig/Decays/PhiPiCurrent # e+ e- -> omega pi pi create Herwig::MEee2Mesons MEee2OmegaPiPi HwMELeptonLowEnergy.so create Herwig::OmegaPiPiCurrent /Herwig/Decays/OmegaPiPiCurrent set MEee2OmegaPiPi:WeakCurrent /Herwig/Decays/OmegaPiPiCurrent ############################################################ # NLO (POWHEG e+e- matrix elements ############################################################ library HwPowhegMELepton.so create Herwig::MEee2gZ2qqPowheg PowhegMEee2gZ2qq newdef PowhegMEee2gZ2qq:MinimumFlavour 1 newdef PowhegMEee2gZ2qq:MaximumFlavour 5 newdef PowhegMEee2gZ2qq:AlphaQCD /Herwig/Shower/AlphaQCD newdef PowhegMEee2gZ2qq:AlphaQED /Herwig/Shower/AlphaQED create Herwig::MEee2gZ2llPowheg PowhegMEee2gZ2ll newdef PowhegMEee2gZ2ll:Allowed Charged set PowhegMEee2gZ2ll:AlphaQED /Herwig/Shower/AlphaQED ############################################################ # hadron-hadron matrix elements ############################################################ ################################### # Electroweak processes ################################### # q qbar -> gamma/Z -> l+l- create Herwig::MEqq2gZ2ff MEqq2gZ2ff newdef MEqq2gZ2ff:Process 3 newdef MEqq2gZ2ff:Coupling /Herwig/Shower/AlphaQCD # q qbar to W -> l nu create Herwig::MEqq2W2ff MEqq2W2ff newdef MEqq2W2ff:Process 2 newdef MEqq2W2ff:Coupling /Herwig/Shower/AlphaQCD # W+jet create Herwig::MEPP2WJet MEWJet newdef MEWJet:WDecay Leptons # Z+jet create Herwig::MEPP2ZJet MEZJet newdef MEZJet:ZDecay ChargedLeptons # PP->WW/WZ/ZZ create Herwig::MEPP2VV MEPP2VV # PP->WZ gamma create Herwig::MEPP2VGamma MEPP2VGamma ################################### # Photon and jet processes ################################### # qqbar/gg -> gamma gamma create Herwig::MEPP2GammaGamma MEGammaGamma # hadron-hadron to gamma+jet create Herwig::MEPP2GammaJet MEGammaJet # QCD 2-to-2 create Herwig::MEQCD2to2 MEQCD2to2 # MinBias create Herwig::MEMinBias MEMinBias newdef MEMinBias:csNorm 0.01 newdef MEMinBias:Scale 2.0 ################################### # Heavy Quark ################################### # qqbar/gg -> t tbar create Herwig::MEPP2QQ MEHeavyQuark create Herwig::MEPP2SingleTop MESingleTopTChannel set MESingleTopTChannel:Process tChannel create Herwig::MEPP2SingleTop MESingleTopSChannel set MESingleTopSChannel:Process sChannel create Herwig::MEPP2SingleTop MESingleTopTW set MESingleTopTW:Process tW ################################### # Higgs processes ################################### # hadron-hadron to higgs create Herwig::MEPP2Higgs MEHiggs newdef MEHiggs:ShapeScheme MassGenerator newdef MEHiggs:Process gg newdef MEHiggs:Coupling /Herwig/Shower/AlphaQCD # hadron-hadron to higgs+jet create Herwig::MEPP2HiggsJet MEHiggsJet # PP->ZH create Herwig::MEPP2ZH MEPP2ZH newdef MEPP2ZH:Coupling /Herwig/Shower/AlphaQCD # PP->WH create Herwig::MEPP2WH MEPP2WH newdef MEPP2WH:Coupling /Herwig/Shower/AlphaQCD # PP -> Higgs via VBF create Herwig::MEPP2HiggsVBF MEPP2HiggsVBF newdef MEPP2HiggsVBF:ShowerAlphaQCD /Herwig/Shower/AlphaQCD # PP -> t tbar Higgs create Herwig::MEPP2QQHiggs MEPP2ttbarH newdef MEPP2ttbarH:QuarkType Top # PP -> b bbar Higgs create Herwig::MEPP2QQHiggs MEPP2bbbarH newdef MEPP2bbbarH:QuarkType Bottom ########################################################## # Hadron-Hadron NLO matrix elements in the Powheg scheme ########################################################## library HwPowhegMEHadron.so # q qbar -> gamma/Z -> l+l- create Herwig::MEqq2gZ2ffPowheg PowhegMEqq2gZ2ff newdef PowhegMEqq2gZ2ff:Process 3 newdef PowhegMEqq2gZ2ff:Coupling /Herwig/Shower/AlphaQCD # q qbar to W -> l nu create Herwig::MEqq2W2ffPowheg PowhegMEqq2W2ff newdef PowhegMEqq2W2ff:Process 2 newdef PowhegMEqq2W2ff:Coupling /Herwig/Shower/AlphaQCD # PP->ZH create Herwig::MEPP2ZHPowheg PowhegMEPP2ZH newdef PowhegMEPP2ZH:Coupling /Herwig/Shower/AlphaQCD # PP->WH create Herwig::MEPP2WHPowheg PowhegMEPP2WH newdef PowhegMEPP2WH:Coupling /Herwig/Shower/AlphaQCD # hadron-hadron to higgs create Herwig::MEPP2HiggsPowheg PowhegMEHiggs newdef PowhegMEHiggs:ShapeScheme MassGenerator newdef PowhegMEHiggs:Process gg newdef PowhegMEHiggs:Coupling /Herwig/Shower/AlphaQCD # PP->VV create Herwig::MEPP2VVPowheg PowhegMEPP2VV newdef PowhegMEPP2VV:Coupling /Herwig/Shower/AlphaQCD # PP -> Higgs via VBF create Herwig::MEPP2HiggsVBFPowheg PowhegMEPP2HiggsVBF newdef PowhegMEPP2HiggsVBF:ShowerAlphaQCD /Herwig/Shower/AlphaQCD # PP -> diphoton NLO create Herwig::MEPP2GammaGammaPowheg MEGammaGammaPowheg set MEGammaGammaPowheg:Process 0 set MEGammaGammaPowheg:Contribution 1 set MEGammaGammaPowheg:ShowerAlphaQCD /Herwig/Shower/AlphaQCD set MEGammaGammaPowheg:ShowerAlphaQED /Herwig/Shower/AlphaQED ########################################################## # DIS matrix elements ########################################################## # neutral current create Herwig::MENeutralCurrentDIS MEDISNC newdef MEDISNC:Coupling /Herwig/Shower/AlphaQCD newdef MEDISNC:Contribution 0 # charged current create Herwig::MEChargedCurrentDIS MEDISCC newdef MEDISCC:Coupling /Herwig/Shower/AlphaQCD newdef MEDISCC:Contribution 0 # neutral current (POWHEG) create Herwig::MENeutralCurrentDIS PowhegMEDISNC newdef PowhegMEDISNC:Coupling /Herwig/Shower/AlphaQCD newdef PowhegMEDISNC:Contribution 1 # charged current (POWHEG) create Herwig::MEChargedCurrentDIS PowhegMEDISCC newdef PowhegMEDISCC:Coupling /Herwig/Shower/AlphaQCD newdef PowhegMEDISCC:Contribution 1 ########################################################## # Gamma-Gamma matrix elements ########################################################## # fermion-antiferimon create Herwig::MEGammaGamma2ff MEgg2ff HwMEGammaGamma.so # W+ W- create Herwig::MEGammaGamma2WW MEgg2WW HwMEGammaGamma.so ########################################################## # Gamma-Hadron matrix elements ########################################################## # gamma parton -> 2 jets create Herwig::MEGammaP2Jets MEGammaP2Jets HwMEGammaHadron.so ########################################################## # Set up the Subprocesses # # Generic for all colliders ########################################################## create ThePEG::SubProcessHandler SubProcess newdef SubProcess:PartonExtractor /Herwig/Partons/PPExtractor