Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F8723967
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
42 KB
Subscribers
None
View Options
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
Details
Attached
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)
Attached To
rHERWIGHG herwighg
Event Timeline
Log In to Comment