Page MenuHomeHEPForge

No OneTemporary

diff --git a/Models/DarkMatter/DMDMMediatorVertex.cc b/Models/DarkMatter/DMDMMediatorVertex.cc
--- a/Models/DarkMatter/DMDMMediatorVertex.cc
+++ b/Models/DarkMatter/DMDMMediatorVertex.cc
@@ -1,66 +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.) {
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<DMDMMediatorVertex,FFVVertex>
describeHerwigDMDMMediatorVertex("Herwig::DMDMMediatorVertex", "HwDMModel.so");
void DMDMMediatorVertex::Init() {
static ClassDocumentation<DMDMMediatorVertex> 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<cDMModelPtr>(generator()->standardModel());
cDMmed_ = model->cDMmed();
addToList(52, 52, 32);
+ FFVVertex::doinit();
}
diff --git a/Models/DarkMatter/DMMediatorQuarksVertex.cc b/Models/DarkMatter/DMMediatorQuarksVertex.cc
--- a/Models/DarkMatter/DMMediatorQuarksVertex.cc
+++ b/Models/DarkMatter/DMMediatorQuarksVertex.cc
@@ -1,68 +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() {
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-1]);
left(1.);
right(1.);
}
// The following static variable is needed for the type
// description system in ThePEG.
DescribeClass<DMMediatorQuarksVertex,FFVVertex>
describeHerwigDMMediatorQuarksVertex("Herwig::DMMediatorQuarksVertex", "HwDMModel.so");
void DMMediatorQuarksVertex::Init() {
static ClassDocumentation<DMMediatorQuarksVertex> documentation
("The DMMediatorQuarksVertex class implements the coupling of the quarks to the mediator.");
}
void DMMediatorQuarksVertex::doinit() {
- FFVVertex::doinit();
cDMModelPtr model = dynamic_ptr_cast<cDMModelPtr>(generator()->standardModel());
cSMmed_ = model->cSMmed();
for(int ix=1;ix<4;++ix) {
addToList(-ix, ix, 32);
}
+ FFVVertex::doinit();
}
diff --git a/Models/General/Makefile.am b/Models/General/Makefile.am
--- a/Models/General/Makefile.am
+++ b/Models/General/Makefile.am
@@ -1,56 +1,58 @@
BUILT_SOURCES = ModelGenerator__all.cc
CLEANFILES = ModelGenerator__all.cc
ModelGenerator__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 = \
ModelGenerator.h ModelGenerator.fh \
DecayConstructor.h DecayConstructor.fh \
NBodyDecayConstructorBase.h \
NBodyDecayConstructorBase.fh \
TwoBodyDecayConstructor.h \
TwoToTwoProcessConstructor.h TwoToTwoProcessConstructor.fh \
HardProcessConstructor.h HardProcessConstructor.fh \
HiggsVectorBosonProcessConstructor.h \
HiggsVBFProcessConstructor.h \
QQHiggsProcessConstructor.h \
HPDiagram.h \
ThreeBodyDecayConstructor.h \
FourBodyDecayConstructor.h \
WeakCurrentDecayConstructor.h \
+VectorCurrentDecayConstructor.h \
ResonantProcessConstructor.h \
ResonantProcessConstructor.fh \
VVSLoopVertex.fh VVSLoopVertex.h \
GenericHGGVertex.h \
GenericHPPVertex.h \
BSMWidthGenerator.h BSMWidthGenerator.fh \
PrototypeVertex.h \
TBDiagram.h TwoBodyDecay.h\
BSMModel.h
DIR_CC_FILES = $(addprefix $(srcdir)/,$(ALL_CC_FILES))
ALL_CC_FILES = \
ModelGenerator.cc\
DecayConstructor.cc \
NBodyDecayConstructorBase.cc \
TwoBodyDecayConstructor.cc \
TwoToTwoProcessConstructor.cc \
HardProcessConstructor.cc \
HiggsVectorBosonProcessConstructor.cc \
HiggsVBFProcessConstructor.cc \
QQHiggsProcessConstructor.cc \
ThreeBodyDecayConstructor.cc \
FourBodyDecayConstructor.cc \
WeakCurrentDecayConstructor.cc \
+VectorCurrentDecayConstructor.cc \
ResonantProcessConstructor.cc \
VVSLoopVertex.cc \
GenericHGGVertex.cc \
GenericHPPVertex.cc \
BSMWidthGenerator.cc \
PrototypeVertex.cc \
BSMModel.cc
diff --git a/Models/General/VectorCurrentDecayConstructor.cc b/Models/General/VectorCurrentDecayConstructor.cc
new file mode 100644
--- /dev/null
+++ b/Models/General/VectorCurrentDecayConstructor.cc
@@ -0,0 +1,170 @@
+// -*- C++ -*-
+//
+// This is the implementation of the non-inlined, non-templated member
+// functions of the VectorCurrentDecayConstructor class.
+//
+
+#include "VectorCurrentDecayConstructor.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 "Herwig/Decay/General/DMMediatorDecayer.h"
+
+
+namespace {
+struct ParticleOrdering {
+ /**
+ * Operator for the ordering
+ * @param p1 The first ParticleData object
+ * @param p2 The second ParticleData object
+ */
+ bool operator() (tcPDPtr p1, tcPDPtr p2) const {
+ return abs(p1->id()) > abs(p2->id()) ||
+ ( abs(p1->id()) == abs(p2->id()) && p1->id() > p2->id() ) ||
+ ( p1->id() == p2->id() && p1->fullName() > p2->fullName() );
+ }
+};
+}
+
+using namespace Herwig;
+
+IBPtr VectorCurrentDecayConstructor::clone() const {
+ return new_ptr(*this);
+}
+
+IBPtr VectorCurrentDecayConstructor::fullclone() const {
+ return new_ptr(*this);
+}
+
+void VectorCurrentDecayConstructor::persistentOutput(PersistentOStream & os) const {
+os << ounit(massCut_,GeV) << current_;
+}
+
+void VectorCurrentDecayConstructor::persistentInput(PersistentIStream & is, int) {
+is >> iunit(massCut_,GeV) >> current_;
+}
+
+
+// The following static variable is needed for the type
+// description system in ThePEG.
+DescribeClass<VectorCurrentDecayConstructor,NBodyDecayConstructorBase>
+ describeHerwigVectorCurrentDecayConstructor("Herwig::VectorCurrentDecayConstructor", "Herwig.so");
+
+void VectorCurrentDecayConstructor::Init() {
+
+ static ClassDocumentation<VectorCurrentDecayConstructor> documentation
+ ("The VectorCurrentDecayConstructor class constructs the decays of low mass vector bosons"
+ " to hadrons via the weak current");
+
+ static RefVector<VectorCurrentDecayConstructor,WeakCurrent> interfaceCurrent
+ ("Current",
+ "The current for the decay mode",
+ &VectorCurrentDecayConstructor::current_, -1, false, false, true, false, false);
+
+ static Parameter<VectorCurrentDecayConstructor,Energy> interfaceMassCut
+ ("MassCut",
+ "The maximum mass difference for the decay",
+ &VectorCurrentDecayConstructor::massCut_, GeV, 2.0*GeV, 1.0*GeV, 10.0*GeV,
+ false, false, Interface::limited);
+
+}
+
+void VectorCurrentDecayConstructor::doinit() {
+ NBodyDecayConstructorBase::doinit();
+ model_ = dynamic_ptr_cast<Ptr<Herwig::StandardModel>::pointer>(generator()->standardModel());
+}
+
+void VectorCurrentDecayConstructor::DecayList(const set<PDPtr> & particles) {
+ if( particles.empty() ) return;
+ unsigned int nv(model_->numberOfVertices());
+ for(PDPtr part : particles) {
+ if(part->iSpin()!=PDT::Spin1) continue;
+ if(part->iCharge()!=0) continue;
+ bool foundD(false),foundU(false),foundS(false);
+ if(part->mass()>massCut_) continue;
+ for(unsigned int iv = 0; iv < nv; ++iv) {
+ VertexBasePtr vertex = model_->vertex(iv);
+ if( !vertex->isIncoming(part) || vertex->getNpoint() != 3 ) continue;
+ for(unsigned int iloc = 0;iloc < 3; ++iloc) {
+ vector<long> ext = vertex->search(iloc, part->id());
+ if(ext.empty()) continue;
+ for(unsigned int ioff=0;ioff<ext.size();ioff+=3) {
+ if(iloc!=2) assert(false);
+ if(abs(ext[ioff])==1 && abs(ext[ioff+1])==1 && ext[ioff]==-ext[ioff+1]) {
+ foundD = true;
+ }
+ else if(abs(ext[ioff])==2 && abs(ext[ioff+1])==2 && ext[ioff]==-ext[ioff+1]) {
+ foundU = true;
+ }
+ else if(abs(ext[ioff])==3 && abs(ext[ioff+1])==3 && ext[ioff]==-ext[ioff+1]) {
+ foundS = true;
+ }
+ }
+ }
+ }
+ if(!foundD && !foundU && !foundS) continue;
+ for(tWeakCurrentPtr current : current_) {
+ current->init();
+ for(unsigned int imode=0;imode<current->numberOfModes();++imode) {
+ // get the external particles for this mode
+ int iq(0),ia(0);
+ tPDVector out = current->particles(0,imode,iq,ia);
+ current->decayModeInfo(imode,iq,ia);
+ if(iq==2&&ia==-2) continue;
+ // order the particles
+ bool skip=false;
+ for(unsigned int ix=0;ix<out.size();++ix) {
+ if(!out[ix]) {
+ skip=true;
+ break;
+ }
+ }
+ if(skip) continue;
+ multiset<tcPDPtr,ParticleOrdering> outgoing(out.begin(),out.end());
+ string tag = part->PDGName() + "->";
+ bool first=false;
+ for(tcPDPtr part : outgoing) {
+ if(!first)
+ first=true;
+ else
+ tag+=",";
+ tag+=part->PDGName();
+ }
+ tag+=";";
+ int charge(0);
+ for(tcPDPtr part : outgoing)
+ charge+=part->iCharge();
+ if(charge!=0) continue;
+ // create the decayer
+ ostringstream fullname;
+ fullname << "/Herwig/Decays/DMMediator_" << part->PDGName();
+ for(tcPDPtr part : out)
+ fullname << "_" << part->PDGName();
+ string classname = "Herwig::DMMediatorDecayer";
+ DMMediatorDecayerPtr decayer = dynamic_ptr_cast<DMMediatorDecayerPtr>
+ (generator()->preinitCreate(classname,fullname.str()));
+ decayer->setDecayInfo(part,out,current);
+ // // set decayer options from base class
+ // setDecayerInterfaces(fullname.str());
+ // initialize the decayer
+ decayer->init();
+ // calculate the width
+ Energy pWidth = decayer->partialWidth(part,out);
+ if(pWidth<=ZERO) {
+ generator()->preinitInterface(decayer->fullName(),
+ "Initialize", "set","0");
+ continue;
+ }
+ tDMPtr ndm = generator()->preinitCreateDecayMode(tag);
+ generator()->preinitInterface(ndm, "Decayer", "set", decayer->fullName());
+ part->stable(false);
+ generator()->preinitInterface(ndm, "Active", "set", "Yes");
+ setBranchingRatio(ndm, pWidth);
+ }
+ }
+ }
+}
diff --git a/Models/General/VectorCurrentDecayConstructor.h b/Models/General/VectorCurrentDecayConstructor.h
new file mode 100644
--- /dev/null
+++ b/Models/General/VectorCurrentDecayConstructor.h
@@ -0,0 +1,131 @@
+// -*- C++ -*-
+#ifndef Herwig_VectorCurrentDecayConstructor_H
+#define Herwig_VectorCurrentDecayConstructor_H
+//
+// This is the declaration of the VectorCurrentDecayConstructor class.
+//
+
+#include "NBodyDecayConstructorBase.h"
+#include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
+
+namespace Herwig {
+
+using namespace ThePEG;
+
+/**
+ * The VectorCurrentDecayConstructor class constructs the decay of low mass vector bosons via the weak currents.
+ *
+ * @see \ref VectorCurrentDecayConstructorInterfaces "The interfaces"
+ * defined for VectorCurrentDecayConstructor.
+ */
+class VectorCurrentDecayConstructor: public NBodyDecayConstructorBase {
+
+public:
+
+ /**
+ * The default constructor.
+ */
+ VectorCurrentDecayConstructor() : massCut_(2.*GeV)
+ {}
+
+ /**
+ * Function used to determine allowed decaymodes, to be implemented
+ * in derived class.
+ *@param part vector of ParticleData pointers containing particles in model
+ */
+ virtual void DecayList(const set<PDPtr> & part);
+
+ /**
+ * Number of outgoing lines. Required for correct ordering (do this one next-to-last)
+ */
+ virtual unsigned int numBodies() const { return 999; }
+
+ /**
+ * Cut off
+ */
+ Energy massCut() const { return massCut_;}
+
+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();
+
+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;
+ //@}
+
+protected:
+
+ /** @name Standard Interfaced functions. */
+ //@{
+ /**
+ * Initialize this object after the setup phase before saving an
+ * EventGenerator to disk.
+ * @throws InitException if object could not be initialized properly.
+ */
+ virtual void doinit();
+ //@}
+
+private:
+
+ /**
+ * The assignment operator is private and must never be called.
+ * In fact, it should not even be implemented.
+ */
+ VectorCurrentDecayConstructor & operator=(const VectorCurrentDecayConstructor &) = delete;
+
+private:
+
+ /**
+ * Model Pointer
+ */
+ Ptr<Herwig::StandardModel>::pointer model_;
+
+ /**
+ * Cut-off on the mass difference
+ */
+ Energy massCut_;
+
+ /**
+ * The current for the mode
+ */
+ vector<WeakCurrentPtr> current_;
+};
+
+}
+
+#endif /* Herwig_VectorCurrentDecayConstructor_H */
diff --git a/PDT/DMMediatorWidthGenerator.cc b/PDT/DMMediatorWidthGenerator.cc
deleted file mode 100644
--- a/PDT/DMMediatorWidthGenerator.cc
+++ /dev/null
@@ -1,206 +0,0 @@
-// -*- C++ -*-
-//
-// This is the implementation of the non-inlined, non-templated member
-// functions of the DMMediatorWidthGenerator class.
-//
-
-#include "DMMediatorWidthGenerator.h"
-#include "ThePEG/Interface/ClassDocumentation.h"
-#include "ThePEG/Interface/RefVector.h"
-#include "ThePEG/Interface/Reference.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 "Herwig/Decay/PhaseSpaceMode.h"
-#include "Herwig/Decay/General/DMMediatorDecayer.h"
-
-using namespace Herwig;
-
-namespace {
-struct ParticleOrdering {
- /**
- * Operator for the ordering
- * @param p1 The first ParticleData object
- * @param p2 The second ParticleData object
- */
- bool operator() (tcPDPtr p1, tcPDPtr p2) const {
- return abs(p1->id()) > abs(p2->id()) ||
- ( abs(p1->id()) == abs(p2->id()) && p1->id() > p2->id() ) ||
- ( p1->id() == p2->id() && p1->fullName() > p2->fullName() );
- }
-};
-}
-
-DMMediatorWidthGenerator::DMMediatorWidthGenerator()
-{}
-
-IBPtr DMMediatorWidthGenerator::clone() const {
- return new_ptr(*this);
-}
-
-IBPtr DMMediatorWidthGenerator::fullclone() const {
- return new_ptr(*this);
-}
-
-void DMMediatorWidthGenerator::doinit() {
- for(tWeakCurrentPtr current : weakCurrents_) {
- current->init();
- for(unsigned int imode=0;imode<current->numberOfModes();++imode) {
- // get the external particles for this mode
- int iq(0),ia(0);
- tPDVector out = current->particles(0,imode,iq,ia);
- current->decayModeInfo(imode,iq,ia);
- if(iq==2&&ia==-2) continue;
- // order the particles
- bool skip=false;
- for(unsigned int ix=0;ix<out.size();++ix) {
- if(!out[ix]) {
- skip=true;
- break;
- }
- }
- if(skip) continue;
- multiset<tcPDPtr,ParticleOrdering> outgoing(out.begin(),out.end());
- string tag = parent_->PDGName() + "->";
- bool first=false;
- for(tcPDPtr part : outgoing) {
- if(!first)
- first=true;
- else
- tag+=",";
- tag+=part->PDGName();
- }
- tag+=";";
- int charge(0);
- for(tcPDPtr part : outgoing)
- charge+=part->iCharge();
- if(charge!=0) continue;
- // create the decayer
- ostringstream fullname;
- fullname << "/Herwig/Decays/DMMediator_" << parent_->PDGName();
- for(tcPDPtr part : out)
- fullname << "_" << part->PDGName();
- string classname = "Herwig::DMMediatorDecayer";
- DMMediatorDecayerPtr decayer = dynamic_ptr_cast<DMMediatorDecayerPtr>
- (generator()->preinitCreate(classname,fullname.str()));
- decayer->setDecayInfo(parent_,out,current);
- // // set decayer options from base class
- // setDecayerInterfaces(fullname.str());
- // initialize the decayer
- decayer->init();
- // calculate the width
- Energy pWidth = decayer->partialWidth(parent_,out);
- if(pWidth<=ZERO) {
- generator()->preinitInterface(decayer->fullName(),
- "Initialize", "set","0");
- continue;
- }
- tDMPtr ndm = generator()->preinitCreateDecayMode(tag);
- generator()->preinitInterface(ndm, "Decayer", "set", decayer->fullName());
- parent_->stable(false);
- generator()->preinitInterface(ndm, "Active", "set", "Yes");
- setBranchingRatio(ndm, pWidth);
- }
- }
- WidthGenerator::doinit();
- cerr << "Width for " << parent_->PDGName() << " = " << parent_->width()/GeV << " GeV\n";
- cerr << "Decay modes : \n";
- for(auto mode : parent_->decayModes()) {
- cerr << mode->tag() << " " << mode->brat() << "\n";
- }
-}
-
-
-void DMMediatorWidthGenerator::persistentOutput(PersistentOStream & os) const {
- os << weakCurrents_;
-}
-
-void DMMediatorWidthGenerator::persistentInput(PersistentIStream & is, int) {
- is >> weakCurrents_;
-}
-
-// The following static variable is needed for the type
-// description system in ThePEG.
-DescribeClass<DMMediatorWidthGenerator,WidthGenerator>
-describeHerwigDMMediatorWidthGenerator("Herwig::DMMediatorWidthGenerator", "Herwig.so");
-
-void DMMediatorWidthGenerator::Init() {
-
- static ClassDocumentation<DMMediatorWidthGenerator> documentation
- ("There is no documentation for the DMMediatorWidthGenerator class");
-
- static RefVector<DMMediatorWidthGenerator,WeakCurrent> interfaceWeakCurrents
- ("WeakCurrents",
- "Weak currents to use for the decays",
- &DMMediatorWidthGenerator::weakCurrents_, -1, false, false, true, false, false);
-
- static Reference<DMMediatorWidthGenerator,ParticleData> interfaceParent
- ("Parent",
- "The decaying particle",
- &DMMediatorWidthGenerator::parent_, false, false, true, false, false);
-}
-
-
-bool DMMediatorWidthGenerator::accept(const ParticleData & pd) const {
- if(pd.iSpin()!=PDT::Spin1) return false;
- if(parent_ && pd.id()!=parent_->id()) return false;
- return true;
-}
-
-Energy DMMediatorWidthGenerator::width(const ParticleData & pd, Energy) const {
- return pd.width();
-}
-
-WidthGenerator::DecayMap DMMediatorWidthGenerator::rate(const ParticleData & pd) const {
- return pd.decaySelector();
-}
-
-void DMMediatorWidthGenerator::setBranchingRatio(tDMPtr dm, Energy pwidth) {
- // if zero width just set BR to zero
- if(pwidth==ZERO) {
- generator()->preinitInterface(dm, "BranchingRatio","set", "0.");
- generator()->preinitInterface(dm, "OnOff","set", "Off");
- return;
- }
- // Need width and branching ratios for all currently created decay modes
- DecaySet modes = parent_->decayModes();
- unsigned int nmodes=0;
- for( auto dm : modes ) {
- if(dm->on()) ++nmodes;
- }
- if( nmodes==0 ) return;
- double dmbrat(0.);
- if( nmodes == 1 ) {
- parent_->width(pwidth);
- if( pwidth > ZERO ) parent_->cTau(hbarc/pwidth);
- dmbrat = 1.;
- parent_->width(pwidth);
- }
- else {
- Energy currentwidth(parent_->width());
- Energy newWidth(currentwidth + pwidth);
- parent_->width(newWidth);
- if( newWidth > ZERO ) parent_->cTau(hbarc/newWidth);
- //need to reweight current branching fractions if there are any
- double factor = newWidth > ZERO ? double(currentwidth/newWidth) : 0.;
- for(DecaySet::const_iterator dit = modes.begin();
- dit != modes.end(); ++dit) {
- if( **dit == *dm || !(**dit).on() ) continue;
- double newbrat = (**dit).brat()*factor;
- ostringstream brf;
- brf << setprecision(13)<< newbrat;
- generator()->preinitInterface(*dit, "BranchingRatio",
- "set", brf.str());
- }
- //set brat for current mode
- dmbrat = newWidth > ZERO ? double(pwidth/newWidth) : 0.;
- parent_->width(newWidth);
- }
- ostringstream br;
- br << setprecision(13) << dmbrat;
- generator()->preinitInterface(dm, "BranchingRatio",
- "set", br.str());
-}
diff --git a/PDT/DMMediatorWidthGenerator.h b/PDT/DMMediatorWidthGenerator.h
deleted file mode 100644
--- a/PDT/DMMediatorWidthGenerator.h
+++ /dev/null
@@ -1,148 +0,0 @@
-// -*- C++ -*-
-#ifndef Herwig_DMMediatorWidthGenerator_H
-#define Herwig_DMMediatorWidthGenerator_H
-//
-// This is the declaration of the DMMediatorWidthGenerator class.
-//
-
-#include "ThePEG/PDT/WidthGenerator.h"
-#include "Herwig/Decay/WeakCurrents/WeakCurrent.h"
-
-namespace Herwig {
-
-using namespace ThePEG;
-
-/**
- * Here is the documentation of the DMMediatorWidthGenerator class.
- *
- * @see \ref DMMediatorWidthGeneratorInterfaces "The interfaces"
- * defined for DMMediatorWidthGenerator.
- */
-class DMMediatorWidthGenerator: public WidthGenerator {
-
-public:
-
- /**
- * The default constructor.
- */
- DMMediatorWidthGenerator();
-
-
- /** @name Virtual functions to be overridden by sub-classes. */
- //@{
- /**
- * Return true if this object can be used for the given particle
- * type with the given decay map.
- */
- virtual bool accept(const ParticleData &) const;
-
- /**
- * Given a particle type and a mass of an instance of that particle
- * type, calculate a width.
- */
- virtual Energy width(const ParticleData &, Energy m) const;
-
- /**
- * Return decay map for the given particle type.
- */
- virtual DecayMap rate(const ParticleData &) const;
- //@}
-
-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();
-
- /**
- * Overloaded function from Interfaced
- */
- virtual bool preInitialize() const {
- return true;
- }
-
-protected:
-
- /**
- * Set the branching ratio of this mode. This requires
- * calculating a new width for the decaying particle and reweighting
- * the current branching fractions.
- * @param dm The decaymode for which to set the branching ratio
- * @param pwidth The calculated width of the mode
- */
- void setBranchingRatio(tDMPtr dm, Energy pwidth);
-
-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;
- //@}
-
-protected:
-
- /** @name Standard Interfaced functions. */
- //@{
- /**
- * Initialize this object after the setup phase before saving an
- * EventGenerator to disk.
- * @throws InitException if object could not be initialized properly.
- */
- virtual void doinit();
- //@}
-
-private:
-
- /**
- * The assignment operator is private and must never be called.
- * In fact, it should not even be implemented.
- */
- DMMediatorWidthGenerator & operator=(const DMMediatorWidthGenerator &);
-
-private:
-
- /**
- * The particle
- */
- PDPtr parent_;
-
- /**
- * Weak currents to use for the decay
- */
- vector<WeakCurrentPtr> weakCurrents_;
-
-};
-
-}
-
-#endif /* Herwig_DMMediatorWidthGenerator_H */
diff --git a/PDT/Makefile.am b/PDT/Makefile.am
--- a/PDT/Makefile.am
+++ b/PDT/Makefile.am
@@ -1,31 +1,30 @@
## libHwPDT.la will go into libHwDecay.so
noinst_LTLIBRARIES = libHwPDT.la libHwBaryonWidth.la
libHwPDT_la_SOURCES = \
GenericMassGenerator.cc GenericMassGenerator.fh \
GenericMassGenerator.h \
GenericWidthGenerator.cc GenericWidthGenerator.fh \
GenericWidthGenerator.h \
OneOffShellCalculator.cc OneOffShellCalculator.fh \
OneOffShellCalculator.h \
ScalarMassGenerator.cc ScalarMassGenerator.fh \
ScalarMassGenerator.h \
ThreeBodyAllOn1IntegralCalculator.tcc \
ThreeBodyAllOn1IntegralCalculator.h \
ThreeBodyAllOnCalculator.tcc \
ThreeBodyAllOnCalculator.h \
TwoBodyAllOnCalculator.cc TwoBodyAllOnCalculator.fh \
TwoBodyAllOnCalculator.h \
TwoOffShellCalculator.cc TwoOffShellCalculator.fh \
TwoOffShellCalculator.h \
WidthCalculatorBase.cc WidthCalculatorBase.fh \
WidthCalculatorBase.h \
StandardMatchers.h StandardMatchers.cc \
SMHiggsWidthGenerator.cc SMHiggsWidthGenerator.h \
-SMHiggsMassGenerator.cc SMHiggsMassGenerator.h \
-DMMediatorWidthGenerator.cc DMMediatorWidthGenerator.h
+SMHiggsMassGenerator.cc SMHiggsMassGenerator.h
libHwBaryonWidth_la_SOURCES = \
BaryonWidthGenerator.cc BaryonWidthGenerator.fh \
BaryonWidthGenerator.h
diff --git a/src/DM.in b/src/DM.in
--- a/src/DM.in
+++ b/src/DM.in
@@ -1,78 +1,62 @@
# -*- 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
-
-
-
-
-
-
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/DM.model b/src/DM.model
--- a/src/DM.model
+++ b/src/DM.model
@@ -1,148 +1,147 @@
# -*- ThePEG-repository -*-
##################################################
# Common setup for Zprime models
#
# This file does not contain anything that
# users need to touch. User settings are in
# DM.in
#
###################################################
#
# Particle Data object for the new resonances
#
###################################################
cd /Herwig/Particles
# Dark model
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
-
+set chi:Stable Stable
###################################################
#
# Main directory and model object
#
###################################################
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: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/DM
cd /Herwig/Vertices/DM
library HwDMModel.so
create Herwig::DMMediatorQuarksVertex DM_QQZPVertex
create Herwig::DMDMMediatorVertex DM_DMDMZPVertex
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/QQZpVertex /Herwig/Vertices/DM/DM_QQZPVertex
set Model:Vertex/DMDMZpVertex /Herwig/Vertices/DM/DM_DMDMZPVertex
###################################################
#
# Set up spin correlation Decayers
#
###################################################
cd /Herwig/NewPhysics
-
+insert DecayConstructor:NBodyDecayConstructors 0 VectorDecayConstructor
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 DM/Model:ModelGenerator NewModel
###################################################
#
# Choose Model over SM
#
###################################################
cd /Herwig/Generators
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
# DM to mediator
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/defaults/BSM.in b/src/defaults/BSM.in
--- a/src/defaults/BSM.in
+++ b/src/defaults/BSM.in
@@ -1,133 +1,153 @@
# -*- ThePEG-repository -*-
#################################################
# Create the BSM machinery
# This only gets switched on in read if it is
# requested by the user
################################################
mkdir /Herwig/NewPhysics
cd /Herwig/NewPhysics
create Herwig::ModelGenerator NewModel
create Herwig::ResonantProcessConstructor ResConstructor
create Herwig::TwoToTwoProcessConstructor HPConstructor
create Herwig::HiggsVectorBosonProcessConstructor HVConstructor
set HVConstructor:AlphaQCD /Herwig/Shower/AlphaQCD
create Herwig::HiggsVBFProcessConstructor HiggsVBFConstructor
create Herwig::QQHiggsProcessConstructor QQHiggsConstructor
create Herwig::DecayConstructor DecayConstructor
newdef DecayConstructor:QEDGenerator /Herwig/QEDRadiation/SOPHTY
create Herwig::TwoBodyDecayConstructor TwoBodyDC
set TwoBodyDC:ExcludeEffectiveVertices No
set TwoBodyDC:AlphaQCD /Herwig/Shower/AlphaQCD
set TwoBodyDC:AlphaQED /Herwig/Shower/AlphaQED
set TwoBodyDC:Interactions QCDandQED
create Herwig::ThreeBodyDecayConstructor ThreeBodyDC
set ThreeBodyDC:RemoveFlavourChangingVertices Yes
create Herwig::FourBodyDecayConstructor FourBodyDC
set FourBodyDC:RemoveFlavourChangingVertices Yes
create Herwig::WeakCurrentDecayConstructor WeakDecayConstructor
set WeakDecayConstructor:InitPoints 10000
set WeakDecayConstructor:MassCut 2.
# pi-
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau1MesonCurrent
insert WeakDecayConstructor:DecayModes 0 pi-;
insert WeakDecayConstructor:Normalisation 0 1.01386262897
# pi-,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi-,pi0;
insert WeakDecayConstructor:Normalisation 0 1.17616809738
# e-,nu_ebar
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2LeptonCurrent
insert WeakDecayConstructor:DecayModes 0 e-,nu_ebar;
insert WeakDecayConstructor:Normalisation 0 1.
# mu-,nu_mubar
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2LeptonCurrent
insert WeakDecayConstructor:DecayModes 0 mu-,nu_mubar;
insert WeakDecayConstructor:Normalisation 0 1.
# tau-,nu_taubar
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2LeptonCurrent
insert WeakDecayConstructor:DecayModes 0 tau-,nu_taubar;
insert WeakDecayConstructor:Normalisation 0 1.
# pi-,pi0,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau3PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi-,pi0,pi0;
insert WeakDecayConstructor:Normalisation 0 1.65956712121
# pi-,pi+,pi-
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau3PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi-,pi+,pi-;
insert WeakDecayConstructor:Normalisation 0 1.62175791702
# pi-,pi+,pi-,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau4PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi-,pi+,pi-,pi0;
insert WeakDecayConstructor:Normalisation 0 1.09170097618
# pi-,pi0,pi0,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau4PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi-,pi0,pi0,pi0;
insert WeakDecayConstructor:Normalisation 0 1.
# Kbar0,pi-
insert WeakDecayConstructor:Current 0 /Herwig/Decays/TauKPiCurrent
insert WeakDecayConstructor:DecayModes 0 Kbar0,pi-;
insert WeakDecayConstructor:Normalisation 0 1.17156865176
# K-
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau1MesonCurrent
insert WeakDecayConstructor:DecayModes 0 K-;
insert WeakDecayConstructor:Normalisation 0 0.938794564668
# K-,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/TauKPiCurrent
insert WeakDecayConstructor:DecayModes 0 K-,pi0;
insert WeakDecayConstructor:Normalisation 0 1.12526014943
# pi-,pi-,pi+,pi0,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau5PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi-,pi-,pi+,pi0,pi0;
insert WeakDecayConstructor:Normalisation 0 0.954286993254
# pi-,pi-,pi-,pi+,pi+
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau5PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi+,pi+,pi+,pi-,pi-;
insert WeakDecayConstructor:Normalisation 0 0.435953860245
# pi-,pi0,pi0,pi0,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau5PionCurrent
insert WeakDecayConstructor:DecayModes 0 pi+,pi0,pi0,pi0,pi0;
insert WeakDecayConstructor:Normalisation 0 0.603378959531
# K0,pi+,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau1K2PiCurrent
insert WeakDecayConstructor:DecayModes 0 K0,pi+,pi0;
insert WeakDecayConstructor:Normalisation 0 0.380268556539
# K+,pi+,pi-
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau1K2PiCurrent
insert WeakDecayConstructor:DecayModes 0 K+,pi+,pi-;
insert WeakDecayConstructor:Normalisation 0 0.407904176498
# K+,K-,pi+
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2K1PiCurrent
insert WeakDecayConstructor:DecayModes 0 K+,K-,pi+;
insert WeakDecayConstructor:Normalisation 0 0.727416124384
# K+,Kbar0,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2K1PiCurrent
insert WeakDecayConstructor:DecayModes 0 K+,Kbar0,pi0;
insert WeakDecayConstructor:Normalisation 0 0.945076580717
# K_L0,K_S0,pi+
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2K1PiCurrent
insert WeakDecayConstructor:DecayModes 0 K_L0,K_S0,pi+;
insert WeakDecayConstructor:Normalisation 0 1.10729951668
# pi+,pi0,gamma
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2MesonPhotonCurrent
insert WeakDecayConstructor:DecayModes 0 pi+,pi0,gamma;
insert WeakDecayConstructor:Normalisation 0 3.13799210805
# eta,pi+,pi0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/TauEtaPiPiCurrent
insert WeakDecayConstructor:DecayModes 0 eta,pi+,pi0;
insert WeakDecayConstructor:Normalisation 0 0.880539616307
# K+,Kbar0
insert WeakDecayConstructor:Current 0 /Herwig/Decays/Tau2PionCurrent
insert WeakDecayConstructor:DecayModes 0 K+,Kbar0;
insert WeakDecayConstructor:Normalisation 0 1.62501804004
+create Herwig::VectorCurrentDecayConstructor VectorDecayConstructor
+set VectorDecayConstructor:InitPoints 10000
+set VectorDecayConstructor:MassCut 2.
+
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/TwoPionCzyzCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/TwoKaonCzyzCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/ThreePionCzyzCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/FourPionCzyzCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/EtaPiPiCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/EtaPrimePiPiCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/OmegaPiPiCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/OmegaPiCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/PiGammaCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/EtaGammaCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/EtaPhiCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/EtaOmegaCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/CzyzCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/KKPiCurrent
+insert VectorDecayConstructor:Current 0 /Herwig/Decays/PhiPiCurrent
+
insert NewModel:HardProcessConstructors[0] HPConstructor
insert NewModel:HardProcessConstructors[1] ResConstructor
insert NewModel:HardProcessConstructors[2] HVConstructor
insert NewModel:HardProcessConstructors[3] HiggsVBFConstructor
insert NewModel:HardProcessConstructors[4] QQHiggsConstructor
newdef NewModel:DecayConstructor DecayConstructor
insert DecayConstructor:NBodyDecayConstructors[0] TwoBodyDC
insert DecayConstructor:NBodyDecayConstructors[1] ThreeBodyDC
insert DecayConstructor:NBodyDecayConstructors[2] FourBodyDC

File Metadata

Mime Type
text/x-diff
Expires
Mon, Jan 20, 10:05 PM (1 d, 10 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
4242586
Default Alt Text
(42 KB)

Event Timeline